Vue双向绑定.
1、什么是双向绑定?.
Vue.js是一个MVVM框架,即数据数据双向绑定,即当数据发生变化时,视图也就发生变化,当视图发生变化时,数据也会同步变化。
我们说的数据双向绑定是相对于UI控件来说的,非UI控件不会涉及到数据双向绑定。
单向数据绑定是使用状态管理工具的前提。如果我们使用
vuex
,那么数据流也是单向的,这时就会和双向数据绑定有冲突。
2、为啥要实现数据的双向绑定.
在 vue.js
中,如果使用 vuex
,实际上数据还是单向的,之所以说是数据双向绑定,这是用的UI控件来说,对于我们处理表单,Vue.js的双向数据绑定用起来就特别舒服。即两者并不互斥,在全局性数据流使用单向,方便追踪;局部性数据流使用双向,简单易操作
3、在表单中使用双向绑定.
可以使用v-model指令在表单 <input>
、<textarea>
、<select>
元素上创建双向数据绑定。
它会根据控件类型自动选择正确的方法来更新元素。
它负责监听用户输入事件以更新数据,并对一些极端场景进行一些特殊处理。
v-model
会忽略所有表单元素的value、checked、selected特性的初始值而总是将Vue实例的数据作为数据来源。我们应该通过JavaScript 在组件的data选项中声明初始值
v-model.
<body>
<div id="app">
<input type="text" v-model="message"/>{{message}}
<br>
<select v-model="num">
<option value="" disabled>---请选择---</option> <!--使用双向绑定后 下拉列表变为空 苹果第一项:如果是空就选不了了-->
<option>first</option>
<option>second</option>
<option>third</option>
</select>
选择的是:{{num}}
<br>
</div>
<script>
var vm = new Vue({
el:"#app",
data:{
message: "请输入文本,我会跟着文本变化!",
num: ""
},
});
</script>
</body>
</html>
如果
v-model
绑定的表单初始值未能匹配任何选项,<select>
元素将被渲染为” 未选中 “ 状态。在IOS中,这会使用户无法选择第一个选项,因为在这种情况下,ios不会触发change事件。因此,更推荐像上面这样提供一个值为空的禁用选项。