一、绑定的概念
<a v-bind:href="school.url.toUpperCase()">点我去{{scholl.address}学习}</a>中href的属性值要看表达式执行的结果,表达式执行结果是一个超链接,那么href的属性值就是一个超链接。所以,属性名和属性值的表达式之间就有一种绑定的关系。例如:生活中例子,你座下,裤子就座下,绑定在一起了。靠指令来完成数据绑定。之前的v-bind也完成数据绑定,但是,还有一个指令可以完成数据绑定,完成的事情还要比v-bind指令要高级。
<body>
<!-- 准备好一个容器 -->
<div id="root">
单向数据绑定:<input type="text" :placeholder="school.name"/><br>
双向数据绑定:<input type="text" :value="school.name"/>
</div>
<script src="js/vue.js"></script>
<script>
<!-- 创建Vue实例 -->
const vm = new Vue({
el:'#root',
data:{
school:{
name:"昆一中"
}
}
})
</script>
</body>
(1)v-bind最大的特点:单向数据绑定
(2)v-module可以完成双向数据绑定:
module有模型的意思。
<body>
<div id="root">
双向数据绑定1:<input type="text" v-model:value="school"><br>
双向数据绑定2:<input type="text"v-model::value="school">
</div>
<script src="js/vue.js"></script>
<script>
const vm = new Vue({
el:'#root',
data:{
school:'昆一中'
}
})
</script>
</body>
(3)不是所有属性都能使用v-module指令的。
<body>
<div id="root">
双向数据绑定1:<input type="text" v-model:value="school"><br>
双向数据绑定2:<input type="text"v-model::value="school">
<!-- 是所有属性都能使用v-module的 -->
<h2 v-bind:x="school">v-bind是可以的(会出现x=昆一中的属性)---你好啊</h2>
<h2 v-module:x="school">v-module是不可以的(不会出现x=昆一中的属性)---你好啊</h2>
</div>
<script src="js/vue.js"></script>
<script>
const vm = new Vue({
el:'#root',
data:{
school:'昆一中'
}
})
</script>
</body>
展示效果如下:
报错信息如下:
总结:
v-module只能应用在表单类元素(输入类元素)上,也就是要有value值才行:
h2是没有value值的,不能给其做双向数据绑定。
解析:表单类元素、输入类元素都是让用户能跟其产生交互的,随着用户的输入和删除,这个元素value值在发生变化。而h2这种标题类的标签,不可以进行输入,不能输入就没有value值,没有value值就证明是不能捕获用户的输入,连输入都捕获不了,不可能回头影响数据的变化,就没有意义了。
输入类元素汇总:
input、单选框、多选框、select框、多行输入等。这些输入类元素都有一个共同点:都有
value值。因为
v-module对value进行说话的,元素如果没有value是不可以的,v-module是不能工作的。
二、总结
Vue中有两种数据绑定的格式:
第一种:单向绑定(v-bind):数据只能从data流向页面。
第二种:双向绑定(v-module):数据不仅能从data流向页面,还可以从页面流向data。
注意:
- 双向绑定一般都应用在表单类元素上。
v-module:value可以简写为v-module,因为v-module默认收集的就是value值。- 例如:
v-module:x="school"简写为v-module="school" - 删掉了冒号和
value值
- 例如: