模板语法
数据绑定最常见的形式就是使用“Mustache”语法(双大括号)的文本插值:
<p>{{message}}</p>
通过v-once指令执行一次性插值,当数据改变时,插值处的数据不会更新。需要注意,这个指令也会影响到该节点上的其他数据绑定。
v-once的用法:
<p v-once>这个值不会变化:{{message}}</p>
Mustache语法只会将数据解释为普通文本,为了输出真正的html代码,需要使用v-html指令。
<p>{{testHtml}}</p>
<p v-html="testHtml"></p>
new Vue({
el:'#vue'
data:{
testHtml:'<span style="color:red">red</span>'
}
})
结果:
Mustache语法不能作用在html属性上,应该使用v-bind指令:
<div v-bind:id="id"></div>
在html属性是布尔值时,指令的存在默认为true:
<button v-bind:disabled="tof">点击</button>
"tof"的值如果是null、undefined,那么这个属性不会被渲染到节点中。官网中说如果值是“false”也不会渲染属性,但是实际测试了一下,是会渲染的,但是默认true
使用javascript表达式
对于数据的绑定,Vue.js提供了完全的javascript表达式支持。
{{number+1}}
//支持三元表达式
{{ok?'yes':'no'}}
//单个表达式
{{message.reverse()}}
有个限制就是,每个绑定都只能包含单个表达式,所以下面的例子都不会生效。
<!-- 这是语句,不是表达式 -->
{{ var a = 1 }}
<!-- 流控制也不会生效,请使用三元表达式 -->
{{ if (ok) { return message } }}
修饰符
修饰符用半角句号 . 指明特殊后缀,用于指出一个指令应该以特殊方式绑定,例如,.prevent
修饰符告诉 v-on
指令对于触发的事件调用 event.preventDefault()
:
<form v-on:submit.prevent="onSubmit">...</form>
缩写
v-bind缩写为‘:’
<!-- 完整语法 -->
<a v-bind:href="url">...</a>
<!-- 缩写 -->
<a :href="url">...</a>
v-on缩写为‘@’
<!-- 完整语法 -->
<a v-on:click="doSomething">...</a>
<!-- 缩写 -->
<a @click="doSomething">...</a>