热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Vue】Vue中单向绑定与双向绑定的理解与使用

概述Vue.js最显著的特点就是响应式和数据驱动,也就是将Model和View进行单向绑定或者双向绑定。单向绑定把Model绑定到View,当更新

概述

Vue.js 最显著的特点就是响应式和数据驱动,也就是将Model和View进行单向绑定或者双向绑定。

单向绑定

把Model绑定到View,当更新Model时View就会自动更新。因此,我们不需要再通过原声Javascript代码进行额外的DOM操作。

双向绑定

把Model绑定到View的同时,也将View绑定到Model上。这样,当更新Model时,View就会自动更新;反之,如果用户更新了View,Model的数据也自动被更新了。

Vue中的应用


插值

插值形式就是{{data}}的形式,它使用的是单向绑定。
我们首先定义好一个Javascript对象作为Model,并且把这个Model的两个属性绑定到DOM节点上。

<body><div id&#61;"vm"><p>Hello, {{name}}!</p><p>You are {{age}} years old!</p></div>
</body><script src&#61;"https://cdn.jsdelivr.net/npm/vue&#64;2.5.21/dist/vue.js"></script><script type&#61;"text/Javascript">let vm &#61; new Vue({el: &#39;#vm&#39;,data: {name: &#39;Bob&#39;,age: 18}});
</script>

此时在控制台输入vm.name &#61; &#39;Tom&#39;&#xff0c;可以观察到页面自动地、实时地发生了变化&#xff0c;原来的"Hello, Bob!"自动变成了"Hello, Tom!"

v-bind

如果我们希望某些节点能够支持单向绑定&#xff0c;我们只需要在该属性前面加上v-bind:指令&#xff0c;这样Vue在解析的时候会识别出该指令&#xff0c;就会将该将其属性的值跟Vue实例的Model进行绑定。如

&#xff0c;这里

节点的class样式指定的值为classed&#xff0c;它是一个静态的属性值&#xff0c;通过

绑定之后&#xff0c;classed不再是一个静态的字符串&#xff0c;而是vue实例中的data.classed变量&#xff0c;我们可以通过操作Model的classed来实现对View的class属性的动态更新&#xff0c;从而实现View的动态更新。

<body>
<div id&#61;"vm"><p v-bind:class&#61;"classed">Hello, {{name}}!</p>
</div>
</body><script src&#61;"https://cdn.jsdelivr.net/npm/vue&#64;2.5.21/dist/vue.js"></script><script type&#61;"text/Javascript">let vm &#61; new Vue({el: &#39;#vm&#39;,data: {name: &#39;Bob&#39;,classed: &#39;red&#39;}});
</script><style>
.red {background: red;}
.blue {background: blue;}
</style>

如上面代码所示&#xff0c;vm.classed的初始值为red&#xff0c;此时

的样式属性对应的是.red&#xff0c;此时背景就为红色&#xff0c;我们可以通过在浏览器的控制台输入vm.classed&#61;&#39;blue&#39;&#xff0c;此时背景就自动变成了蓝色。

可以看到通过对class属性进行绑定我们就可以动态的改变class对应的样式&#xff0c;这个都是通过Model的操作完成的&#xff0c;没有设置任何的DOM操作。

v-model

v-model主要是用在表单元素中&#xff0c;实现了双向绑定。
当用户填写表单时&#xff0c;View的状态就被更新了&#xff0c;如果此时Model的数据也会随着输入的数据动态的更新&#xff0c;那就相当于我们把Model和View做了双向绑定。

<body>
<form id&#61;"vm" action&#61;"#"><p><input v-model&#61;"email"></p><p><input v-model&#61;"name"></p>
</form>
</body><script src&#61;"https://cdn.jsdelivr.net/npm/vue&#64;2.5.21/dist/vue.js"></script><script type&#61;"text/Javascript">let vm &#61; new Vue({el: &#39;#vm&#39;,data: {email: &#39;&#39;,name: &#39;&#39;}});
</script>

我们可以在表单中输入内容&#xff0c;然后在控制台中用vm.$data查看Model的内容&#xff0c;也可以用vm.name查看Model的name属性&#xff0c;它的值和表单对应的是一致的。如果在控制台中用Javascript更新Model&#xff0c;例如&#xff0c;执行vm.name&#61;&#39;Tom&#39;&#xff0c;表单对应的内容就会立刻更新。

可以看出通过v-model实现了表单数据和Model数据的双向绑定。


推荐阅读
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 认识Vue关于Vue的描述有不少,不外乎都会拿来与Angular和React对比,同样头顶MVVM双向数据驱动设计模式光环的Angular自然被对比的最多,但到目前为止,Angul ... [详细]
  • 媒介本文的前身是源自github上的项目awesome-github-vue,但由于该项目上次更新时候为2017年6月12日,许多内容早已逾期或是许多近期优异组件未被收录,所以小肆 ... [详细]
  • 【Vue基础】监听属性watch
    Vue监听属性是watch,我们可以通过watch来响应数据的变化。代码示例: ... [详细]
  • #ReactivityFundamentals#DeclaringReactiveState ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • Vue.Js_Vue之vue.js声明式渲染
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Vue之vue.js声明式渲染相关的知识,希望对你有一定的参考价值。ht ... [详细]
  • vue.js2.0点击获取自己的属性和jquery
    <!DOCTYPEhtml><html><head><metacharsetUTF-8><title>< ... [详细]
  • React基础篇一 - JSX语法扩展与使用
    本文介绍了React基础篇一中的JSX语法扩展与使用。JSX是一种JavaScript的语法扩展,用于描述React中的用户界面。文章详细介绍了在JSX中使用表达式的方法,并给出了一个示例代码。最后,提到了JSX在编译后会被转化为普通的JavaScript对象。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • 本文涉及源码版本为2.6.9准备工作down一份Vue源码,从package.json入手,找我们需要的代码1、package.json中的scripts,build:nodesc ... [详细]
  • <!DOCTYPEhtml><htmllang=en><head><metacharset=UT ... [详细]
  • 安装npm  vue脚手架搭建vue项目
    vue安装最全步骤、脚手架搭建环境1.首先查看是否安装node.js因为整个vue环境里边的npm是基于node的.查看方式是在命令窗口中查看版本快捷键windowR输入nod ... [详细]
  • vuepress是Vue驱动的静态站点生成工具本文仅介绍,搭建静态博客的过程,具体教程及文档请点击进入vuepress中文网点击查看项目代码vuepress初始化下面初始化#将github新创建的仓库克隆到本地 ... [详细]
  • Vue的组件化
    文章目录Vue的组件化一、认识组件化1.什么是组件化2.组件化思想二、注册组件1.组件的使用步骤三、组件其他补充1.全局组件和局部组件2.父组件和子组件3.组件的语法糖写法4.组件 ... [详细]
author-avatar
harekoc_303
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有