Vue学习 - 模板语法
Vue的模板语法学习。
一、插入值
1、文本
最常见的的方式就是使用{{……}}(双大括号)的方式插入文本值。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>文本值插入</title> <script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script> </head> <body> <div id="app"> <p>{{ message }}</p> </div> <script> new Vue({ el: '#app', data: { message: 'Hello world!' } }) </script> </body> </html>
上面例子运行后,{{ message }}显示Hello world! 。
2、html
使用 v-html 指令用于输出 html 代码:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>html插入</title> <script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script> </head> <body> <div id="app"> <div v-html="message"></div> </div> <script> new Vue({ el: '#app', data: { message: '<h1>Holle world!</h1>' } }) </script> </body> </html>
以上例子会将html代码'<h1>Holle world!</h1>'插入到div中。
3、表达式
Vue对js的所有表达式都支持。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue - 表达式</title> <script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script> </head> <body> <div id="app"> {{5+5}}<br> {{ ok ? 'YES' : 'NO' }}<br> {{ message.split('').reverse().join('') }} <div v-bind:id="'list-' + id">Vue学习</div> </div> <script> new Vue({ el: '#app', data: { ok: true, message: 'study', id : 1 } }) </script> </body> </html>
运行结果:(运行后里层div的id为:list-1)
10
YES
yduts
Vue学习
4、指令
指令是带有v-前缀的特殊属性,用于在表达式的值改变时,将某些行为用于到DOM上。
<div id="app"> <p v-if="seen">现在你看到我了</p> </div> <script> new Vue({ el: '#app', data: { seen: true } }) </script>
v-if指令将根据表达式seen的值(true或者false)来决定是否显示(插入)P元素。
5、参数
参数在指令后面以冒号指明。例如:v-bind指令被用来响应的更新HTML属性。
<div id="app"> <pre><a v-bind:href="url">百度一下</a></pre> </div> <script> new Vue({ el: '#app', data: { url: 'http://www.baidu.com' } }) </script>
这里的href是参数,告知v-bind指令将元素的href属性与表达式url的值绑定。
二、按钮监听
1、按钮的事件我们可以使用v-on监听事件,并对用户的输入进行相应。
<div id="app"> <p>{{ message }}</p> <button v-on:click="reverseMessage">反转字符串</button> </div> <script> new Vue({ el: '#app', data: { message: 'study!' }, methods: { reverseMessage: function () { this.message = this.message.split('').reverse().join('') } } }) </script>
以上实例在用户点击按钮后对字符串进行反转操作
三、过滤器
Vue可以自定义过滤器,用于一些常用的文本格式化。格式如下:
<!-- 在两个大括号中 --> {{ message | capitalize }} <!-- 在 v-bind 指令中 --> <div v-bind:id="rawId | formatId"></div>
<div id="app"> {{ message | capitalize }} </div> <script> new Vue({ el: '#app', data: { message: 'study' }, filters: { capitalize: function (value) { if (!value) return '' value = value.toString() return value.charAt(0).toUpperCase() + value.slice(1) } } }) </script>
过滤器函数接受表达式的值作为第一个参数,上面实例是将输入的字符一个字母转为大写。
过滤器可以串联:
{{ message | filterA | filterB }}
过滤器是js函数,因此可以接收参数:
{{ message | filterA('arg1', arg2) }}
这里,message是第一参数,字符串‘arg1’将传给过滤器作为第二参数,arg2作为第三参数。
四、缩写
v-bind缩写
<!-- 完整语法 --> <a v-bind:href="url"></a> <!-- 缩写 --> <a :href="url"></a>
v-on缩写
<!-- 完整语法 --> <a v-on:click="doSomething"></a> <!-- 缩写 --> <a @click="doSomething"></a>
五、Vue实例
1、构造器
每个 Vue.js 应用都是通过构造函数 Vue 创建一个 Vue 的根实例来启动的:
var vm = new Vue({
// 选项
})
2、属性与方法
每个Vue实例都会代理其data对象里所有的属性:
var data = { a: 1 }
var vm = new Vue({
data: data
})
vm.a === data.a // -> true
// 设置属性也会影响到原始数据
vm.a = 2
data.a // -> 2
// ... 反之亦然
data.a = 3
vm.a // -> 3
除了 data 属性, Vue 实例暴露了一些有用的实例属性与方法。这些属性与方法都有前缀 $,以便与代理的 data 属性区分。例如:
var data = { a: 1 }
var vm = new Vue({
el: '#example',
data: data
})
vm.$data === data // -> true
vm.$el === document.getElementById('example') // -> true
// $watch 是一个实例方法
vm.$watch('a', function (newVal, oldVal) {
// 这个回调将在 `vm.a` 改变后调用
})