条件判断使用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)
输入以下: