Vue 插值与表达式
插值
使用“{{}}”,双大括号,将双向绑定的数据实时显示出来。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例</title>
<script src="https://unpkg.com/vue/dist/vue.min.js"></script>
</head>
<body>
<div id="app">
{{ book }}
</div>
<script>
var app = new Vue({
el: '#app',
data : {
book: '《近乎永恒的永世缘物语》'
}
})
</script>
</body>
</html>
通过任何方法修改数据 book,双大括号的内容都会被实时替换。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例</title>
<script src="https://unpkg.com/vue/dist/vue.min.js"></script>
</head>
<body>
<div id="app">
{{ date }}
</div>
<script>
var app = new Vue({
el: '#app',
data : {
date: new Date()
},
mounted: function() {
var _this = this;//声明一个变量指向 Vue 实例this,保证作用域一致
this.timer = setInterval(function() {
_this.date = new Date()//修改数据
}, 1000)
},
beforeDestroy: function () {
if (this.timer) {
clearInterval(this.timer)//Vue实例销毁前,清除定时器
}
}
})
</script>
</body>
</html>
v-html,输出HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例</title>
<script src="https://unpkg.com/vue/dist/vue.min.js"></script>
</head>
<body>
<div id="app">
<span v-html="link"></span>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
link: '<a href="#">这是一个连接</a>'
}
})
</script>
</body>
</html>
获得到的代码为:
<html><head>
<meta charset="utf-8">
<title>Vue 测试实例</title>
<script src="https://unpkg.com/vue/dist/vue.min.js"></script>
</head>
<body>
<div id="app"><span><a href="#">这是一个连接</a></span></div>
<script>
var app = new Vue({
el: '#app',
data: {
link: '<a href="#">这是一个连接</a>'
}
})
</script>
</body>
</html>
可以看到,link的内容将会被渲染为一个具有点击功能的a 标签,而不是纯文本。
v-pre,跳过编译
<span > {{ 这里的内容是不会被编译 }} </span>
上述代码,在编译后会变成
<!---->
若是想显示 {{}} 文本,而不是进行替换,可以使用 v-pre,会跳过这个元素和它的子元素的编译过程。
<span v-pre> {{ 这里的内容是不会被编译 }} </span>
上述代码,在编译后会变成
<span> {{ 这里的内容是不会被编译 }} </span>
简单运算
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例</title>
<script src="https://unpkg.com/vue/dist/vue.min.js"></script>
</head>
<body>
<div id="app">
{{ number / 10 }}
{{ isOK ? '确定' : '取消' }}
{{ text.split(',').reverse().join(',') }}
</div>
<script>
var app = new Vue({
el: '#app',
data: {
number: 100,
isOK: false,
text: '123,456'
}
})
</script>
</body>
</html>
输出:
10 取消 456,123
PS:
Vue 只支持单个表达式,不支持语句和流控制。
在表达式中,不能使用用户自定义的全局变量,只能使用Vue白名单内的全局变量,Math 和 Date。