Vue的模板语法和数据绑定
插值语法
老规矩,先创建HTML
创建容器,并实例化Vue,不明白的可以看看我的第一篇笔记
根据前面学习的内容,我们可以很熟练的写出如下代码(此处代码省略一部分内容)
<div id="root">
<h1>Hello {{name}}</h1>
</div>
<script>
new Vue({
el: '#root',
data: {
'name': 'mike'
}
});
</script>
但是标签属性读怎么取data呢
这里不能使用{{}}。
需要使用Vue的v-bind语法,可以写做v-bind:
或:
,这样就可以让标签属性拿到data中的值
<a v-bind:href="url">点我进入测试网站</a>
<a :href="url">点我进入测试网站</a>
这就是指令语法
指令语法中同样可以书写JS表达式,如name.toUpperCase()
如果数据有重名,就可以把某一个数据设定成类似这样的形式,这里有JSON基础就很好理解
school: {
url: 'https://www.w3.org',
name: 'Vue'
}
取值时使用school.xxx
即可取到school中的值
这样就可以分类管理数据,也使代码更好维护。
数据绑定
通过前面的学习,我们了解了Vue的特征、Vue插值语法及指令语法,但是v-bind能从页面获取数据吗(将页面中输入的数据传回到data中)
单向绑定
老规矩,我们先初始化Vue
<div id="root">
<h1>Hello {{name}}</h1>
</div>
<script>
new Vue({
el: '#root',
data: {
'name': 'mike'
}
});
</script>
大家可以把自己代码做成一个模板来实现
为了测试v-bind是否能双向绑定
我们写一个input
<input type="text" v-bind:value="name" />
打开浏览器改变input的值并通过Vue DevTools查看
可见v-bind不能实现双向绑定,那么如何实现双向绑定呢?
这里可以采用v-model来实现双向绑定。
<input type="text" v-model:value="name" />
v-model不能用于绑定非表单类标签,如p,h1等,如果使用,则会报出以下错误
总结
模板语法
- 插值语法
- 功能:用于解析标签体内容。
- 写法:{{xxx}},xxx是js表达式,且可以直接读取到data中的所有属性。
- 指令语法:
- 功能:用于解析标签(包括:标签属性、标签体内容、绑定事件…)。
- 举例:v-bind:href=“xxx” 或 简写为 :href=“xxx”,xxx同样要写js表达式,且可以直接读取到data中的所有属性。
- 备注:Vue中有很多的指令,且形式都是:v-???,此处我们只是拿v-bind举个例子。
数据绑定
Vue有2种数据绑定的方式:
-
单向绑定(v-bind):数据只能从data流向页面。
-
双向绑定(v-model):数据不仅能从data流向页面,还可以从页面流向data。
备注:
1. 双向绑定一般都应用在表单类元素上(如:input、select等)
2. v-model:value 可以简写为 v-model,因为v-model默认收集的就是value值。
- 了解并熟练掌握Vue的指令语法
- 了解并能熟练使用Vue的数据绑定
入门阶段,请大家多多指教