文章目录 前言 一、双向绑定是什么? 二、实现双向绑定简易Demo 1.编写Demo1.html 2.编写Demo2.html 前言
学习完Vue.js的特性, 双向绑定是在开发中一个非常实用的点. 这次我以一个简易的Demo为切口, 谈一下我对双向绑定的理解.
一、双向绑定是什么?
要说起双向绑定, 必须先谈一下单向绑定。所谓的单向绑定就是, 把Model绑定到View,就是我们之前MVC实现的方式。当Model更新时,View也会自动更新。 那么双向绑定的意思就是,把Model绑定到View的同时,也将View绑定到Model上,程序员用代码更新Model时,View就会自动更新,反之,浏览器的用户更新了View,Model的数据也自动被更新了。 这样说起来,可能还不是很理解,看以下这个简易的Demo以及它的运行结果,就可以初步了解什么是双向绑定了。
二、实现双向绑定简易Demo
1.编写Demo1.html 代码如下:
< html lang &#61; " en" xmlns: v-on&#61; " http://www.w3.org/1999/xhtml" > < head> < meta charset &#61; " UTF-8" > < title> Title title> head> < body> < script src &#61; " https://cdn.jsdelivr.net/npm/vue&#64;2.5.21/dist/vue.min.js" > script> < div id &#61; " lubenwei" > 输入的文本: < input type &#61; " text" v-model &#61; " message" > {{message}} div> < script> var vm &#61; new Vue ( { el: "#lubenwei" , data: { message: "卢本伟牛比" } } ) ; script> body> html>
看上面的代码。代码构成非常简单&#xff0c;引入Vue.js之后&#xff0c;只有两步。 一是id为“lubenwei”的标签&#xff0c; 一个是
对应的Script标签。
下图是代码运行后的结果
① 文本输入一些东西, 后面就跟着显示一些东西。这代表了&#xff1a; (浏览器的用户更新了View&#xff0c;Model的数据也自动被更新了, 不信你看一下控制台&#xff0c;输入vm.message, 发现Model的数据确实被更新了&#xff09; ② 同时你在浏览器的控制台改动后面显示的东西, 输入框里面的东西也会变。这代表了&#xff1a; &#xff08;当程序猿用代码更新了Model时&#xff0c;View也会自动更新&#xff09; 有点感觉了吗&#xff0c;这就是最简单的双向绑定的事例。 下面再写一个稍微复杂一点的。
2.编写Demo2.html 代码如下&#xff1a;
< html lang &#61; " en" xmlns: v-on&#61; " http://www.w3.org/1999/xhtml" > < head> < meta charset &#61; " UTF-8" > < title> Title title> head> < body> < script src &#61; " https://cdn.jsdelivr.net/npm/vue&#64;2.5.21/dist/vue.min.js" > script> < div id &#61; " lubenwei2" > 下拉框:< select v-model &#61; " selected" > < option> A option> < option> B option> < option> C option> select> < span> {{selected}} span> div> < script> var vm2 &#61; new Vue ( { el: "#lubenwei2" , data: { selected: &#39;默认值&#39; } } ) ; script> body> html>
这个代码和Demo1的实现场景差不多&#xff0c; 只不过是从文本框变成了下拉框。
看到这里是不是有点蒙 vue是怎么知道应该绑定option里面的值呢 还有上文的type&#61;“text”, vue是怎么判断的呢&#xff1f; 其实是自动的:
你可以用v-model 指令在表单
、
及
元素上创建双向数据绑 定。它会根据控件类型自动选取正确的方法来更新元素。((((重点!!!)))) 尽管有些神奇&#xff0c;但v-model本质上不过是语法糖。负责监听用户的输入事件以更新数据&#xff0c;并对一些极端场景进行一些特殊处理。
注意: v-model 会忽略所有表单元素的value、checked、 selected 特性的初始值而总是将 Vue实例的数据作为数据来源。你应该通过Javascript在组件的data选项中声明初始值! &#xff08;这里的文字引用自 公众号 狂神说&#xff09;
看完了这两个Demo&#xff0c;我们就对Vue中的双向绑定有了一个初步的了解。当然在实际开发中双向绑定的应用远不止于此&#xff0c;本文只是抛砖引玉&#xff0c;希望能帮助大家快速入门。