



应用程序实例创建完成后,就需要通过插值进行数据绑定。
数据绑定最常见的形式就是使用Mustache语法(双大括号)的文本插值:
<span>Message: {{ message}}</span>
Mustache标签将会被替代为对应数据对象上message属性的值。无论何时,绑定的数据对象上message属性发生了改变,插值处的内容都会更新。
通过使用v-once指令,也能执行一次性地插值,当数据改变时,插值处的内容不会更新。但注意这会影响到该节点上的其他数据绑定:
<span v-once>这个将不会改变: {{ message }}</span>
在谷歌浏览器中运行程序3.1.html,按F12键打开控制台,并切换到“Elements”选项,可以查看渲染的结果,如图3-2所示。
图3-2 渲染文本
注意: Mustache语法(双大括号)会将数据解释为普通文本,而非HTML代码。为了输出真正的HTML代码,以便浏览器能够正常解析,需要使用v-html指令。第4章会详细讲述v-html指令的使用方法。
在模板中,一直都只绑定简单的属性键值。但实际上,对于所有的数据绑定,Vue.js都提供了完全的JavaScript表达式支持。
{{ number + 1 }}
{{ ok ? 'YES' : 'NO' }}
{{ message.split('').reverse().join('')}}
<div v-bind:id="'list-' + id"></div>
上面这些表达式会在所属Vue实例的数据作用域下作为JavaScript被解析。限制就是,每个绑定都只能包含单个表达式,所以下面的例子都不会生效。
<!-- 这是语句,不是表达式 -->
{{ var a = 1}}
<!-- 流控制也不会生效,请使用三元表达式 -->
{{ if (ok) { return message } }}
【例3.2】使用JavaScript表达式(源代码\ch03\3.2.html)。
<div id="app">
<!--使用JavaScript表达式-->
<h2>{{ name.toUpperCase()}}</h2>
<p>总路程为{{speed*time}}米</p>
</div>
<!--引入vue文件-->
<script src="https://unpkg.com/vue@next"></script>
<script>
//创建一个应用程序实例
const vm= Vue.createApp({
//该函数返回数据对象
data(){
return{
name:'xiaoming',
speed:50,
time:30
}
}
//在指定的DOM元素上装载应用程序实例的根组件
}).mount('#app');
</script>
在谷歌浏览器中运行程序,结果如图3-3所示。
图3-3 使用JavaScript表达式