條件判斷使用v-if
指令:html
<div id="app"> <p v-if="seen">看到了</p>; </div>
<script> new Vue({ el:'#app', data:{ seen:true } }) </script>
v-if
指令根據表達式的值(在這裏是seen
)決定是否插入<p>
數組
能夠使用v-else
添加一個else
塊:緩存
<div id="app"> <div v-if="Math.random()>0.5">1</div> <div v-else>2</div> </div>
<script> new Vue({ el:'#app' }) </sctipt>
也能夠增長v-else-if
:app
<div id="app"> <div v-if="value === 'A'">A</div> <div v-else-if="value === 'B'">B</div> <div v-else-if="value === 'C'">C</div> <div v-else>D</div> </div>
<script> new Vue({ el:'#app', data:{ value:'A' } }) </script>
v-else
以及v-else-if
必須跟在v-if
或者v-else-if
以後。dom
也能夠根據v-show
展現元素:ide
<div id="app"> <h1 v-show="ok">Test</h1> </div>
<script> new Vue({ el:'#app', data: { ok:true } }) </script>
循環使用v-for
,格式爲:A in B
,其中A
是B
中的每個值,若B
爲數組,則A
表示其中的沒一個元素,若B
爲對象,則A
能夠表示B
中的沒一個值,一般配合<li>
使用:函數
<div id="app"> <ol> <li v-for="i in arr">{{i.value}}</li> </ol> </div>
<script> new Vue({ el:'#app', data: { arr: [ {value:'value1'}, {value:'value2'}, {value:'value3'} ] } }) </script>
另外也能夠經過一個對象的屬性來迭代數據:this
<div id="app"> <ul> <li v-for="value in obj">{{value}}</li> </ul> </div>
<script> new Vue({ el:'#app', data: { obj: { value1:'value1', value2:'value2', value3:'value3' } } }) </script>
也能夠提供第二個參數做爲鍵名:url
<li v-for="(value,key) in obj"> {{key}} -> {{value}} </li>
第三個參數做爲索引:code
<li v-for="(value,key,index) in obj"> {{index}} : {{key}} -> {{value}} </li>
另外也能夠迭代整數:
<li v-for="n in 10">{{n}}</li>
範圍是從0到10,包含0與10。
計算屬性相似與方法調用,好比以前的反轉字符串的例子:
{{message.split('').reverse().join('')}}
這樣看起來很長,能夠使用計算屬性進行簡化:
<div id="app"> <p>{{reverse}}</p> </div>
<script> new Vue({ el:'#app', data: { message:'Test' }, computed: { reverse:function() { return this.message.split.reverse().join('') } } }) </script>
這裏聲明瞭一個計算屬性reverse
,提供的函數做爲屬性reverse
的getter
,reverse
依賴於message
,當message
更新時,reverse
也會更新。
能夠使用methods
來代替computed
:
methods: { reverse:function() { return this.message.split.reverse().join('') } }
對應只須要增長一對()
:
<div id="app"> <p>{{reverse()}}</p> </div>
computed
基於它的依賴緩存,只有相關依賴修改時纔會從新取值,而使用methods
,在從新渲染時函數總會從新調用執行。
computed
默認只有 getter
,不過也能夠自行提供setter
:
var vm = new Vue({ el:'#app', data: { name:'test', url:'https://www.test.com' }, computed: { site: { get:function() { return this.name + ' ' + this.url; }, set:function(value) { var values = value.split(' ') this.name = values[0] this.url = values[1] } } } }) vm.site = 'test2 https://www.test2.com' document.write('name:'+vm.name) document.write('<br>') document.write('url:'+vm.url)
輸入以下: