vue.js数据绑定的方法(单向、双向和一次性绑定)


Posted in Javascript onJuly 13, 2017

这两天学习了vue.js数据绑定这个地方知识点挺多的,而且很重要,所以,今天添加一点小笔记。

前言

感觉 vue 的很多方面的内容,都参考了 angular 的东西,数据绑定方面,更是赤裸裸的“抄袭”。对照来看,更有助于我们学习和理解框架本身透露出来的思想,而非框架本身。

一、单向绑定

(一)Mustache 语法,双大括号 {{}}(html 内字符串绑定)

<div id="app">
  <p>{{text}}</p>
</div>

<script>
  var app = new Vue({
    el: '#app',
    data: {
      text: 'text content'
    }
  });
</script>

但是,这种双大括号语法,只能用于 html 内部的字符串,不能用于绑定 html 的属性(如 title、disabled、checked 等),angular亦如是。

(二)v-bind 指令(html 属性绑定)

<div id="app">
  <p title={{title}}></p>
  <p v-bind:title="title">title属性绑定,html属性不能使用双大括号形式绑定,只能使用v-bind指令</p>
  <p :title="title">“:” 是 “v-bind” 的快捷方式</p>
</div>

<script>
  var app = new Vue({
    el: '#app',
    data: {
      title: 'title content'
    }
  });
</script>

某些框架如 Ember.js 支持在 html 属性上面使用双大括号语法,如 title={{title}},但是如果像上面,在 vue.js 的 html 属性上使用这种语法,框架本身就会报错,如下图所示:

vue.js数据绑定的方法(单向、双向和一次性绑定)

上面的报错,除了提示不能使用双大括号语法以外,还告诉我们可以使用 v-bind 或者 shorthand,也就是 v-bind 的缩写 :。这一点上,vue 还是和 angular 的 ng-bind 非常相似。

一次性绑定

<div id="app">
  <p v-once>{{once}}</p>
</div>

<script>
  var app = new Vue({
    el: '#app',
    data: {
      once: 'once content'
    }
  });

  app.once = 'changed content';
</script>

原本 angular 不支持一次性绑定的,而过分的使用数据绑定,将严重影响应用性能,angular 中 bindonce 这个第三方模块解决了这个问题。而 vue 通过 v-once 实现了框架本身对一次性绑定的原生支持。

## 不进行 html 转义
<div id="app">
  <p v-html="html">不转义的绑定(直接输出 html)</p>
</div>

<script>
  var app = new Vue({
    el: '#app',
    data: {
      html: '<div>div element</div>'
    }
  });
</script>

出于安全考虑,默认的数据绑定,会进行转义操作,屏蔽掉 html 标签。使用 v-html 指令,可以实现对文本内容不转义输出。这里的输出会替换掉目标标签的 innerHTML 代码中 p 标签中原本的文本将被替换,angular 中也有类似的 ng-bind-html。

双向绑定

<div id="app">
  <div>{{input}}</div>
  <textarea v-model="input"></textarea>
</div>
<script>
  var app = new Vue({
    el: '#app',
    data: {
      input: 'two-way-binding'
    }
  });
</script>

跟 angular 一模一样,双向绑定依赖于 v-model 指令。修改 textarea 中的内容的时候, {{input}} 将让内容同步更新到对应的 div 元素中。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 组件之旅(一)分析和设计
Oct 28 Javascript
jqPlot 图表中文API使用文档及源码和在线示例
Feb 07 Javascript
javascript:文字不间断向左移动的实例代码
Aug 08 Javascript
js时间比较示例分享(日期比较)
Mar 05 Javascript
jquery实现一个简单的表单验证实例
Mar 30 Javascript
详细谈谈javascript的对象
Jul 31 Javascript
jQuery给表格添加分页效果
Mar 02 Javascript
JS通过调用微信API实现微信支付功能的方法示例
Jun 29 Javascript
JavaScrip关于创建常量的知识点
Dec 07 Javascript
vue修改对象的属性值后页面不重新渲染的实例
Aug 09 Javascript
JQuery Ajax执行跨域请求数据的解决方案
Dec 10 jQuery
JavaScript实现多文件下载方法解析
Aug 07 Javascript
Easyui Datagrid自定义按钮列(最后面的操作列)
Jul 13 #Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
Jul 13 #Javascript
解决Vue页面固定滚动位置的处理办法
Jul 13 #Javascript
vue+ElementUI实现订单页动态添加产品数据效果实例代码
Jul 13 #Javascript
Angular如何引入第三方库的方法详解
Jul 13 #Javascript
详解如何构建Angular项目目录结构
Jul 13 #Javascript
深入理解Vue-cli搭建项目后的目录结构探秘
Jul 13 #Javascript
You might like
PHP生成网页快照 不用COM不用扩展.
2010/02/11 PHP
PHP 转义使用详解
2013/07/15 PHP
浅谈Eclipse PDT调试PHP程序
2014/06/09 PHP
PHP微信开发之微信消息自动回复下所遇到的坑
2016/05/09 PHP
微信支付扫码支付php版
2016/07/22 PHP
PHP入门教程之上传文件实例详解
2016/09/11 PHP
PHP模糊查询技术实例分析【附源码下载】
2019/03/07 PHP
PHP+Apache实现二级域名之间共享cookie的方法
2019/07/24 PHP
又一个图片自动缩小的JS代码
2007/03/10 Javascript
Javascript 二维数组
2009/11/26 Javascript
用js脚本控制asp.net下treeview的NodeCheck的实现代码
2010/03/02 Javascript
jquery 简单图片导航插件jquery.imgNav.js
2010/03/17 Javascript
jquery中邮箱地址 URL网站地址正则验证实例代码
2013/09/15 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
2013/12/10 Javascript
JavaScript中对象property的删除方法介绍
2014/12/30 Javascript
jquery中ajax使用error调试错误的方法
2015/02/08 Javascript
Javascript中获取对象的原型对象的方法小结
2015/02/25 Javascript
原生JS实现LOADING效果
2015/03/16 Javascript
bootstrap——bootstrapTable实现隐藏列的示例
2017/01/14 Javascript
AngularJS基于provider实现全局变量的读取和赋值方法
2017/06/28 Javascript
python使用正则表达式分析网页中的图片并进行替换的方法
2015/03/26 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
Python根据欧拉角求旋转矩阵的实例
2019/01/28 Python
Python利用神经网络解决非线性回归问题实例详解
2019/07/19 Python
Python3.6实现根据电影名称(支持电视剧名称),获取下载链接的方法
2019/08/26 Python
python 函数中的参数类型
2020/02/11 Python
Python selenium模块实现定位过程解析
2020/07/09 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
python中的unittest框架实例详解
2021/02/05 Python
利用css3画个同心圆示例代码
2017/07/03 HTML / CSS
AOP的定义以及作用
2013/09/08 面试题
学党史心得体会
2014/09/05 职场文书
向国旗敬礼活动小结
2014/09/27 职场文书
2014年小学教学工作总结
2014/11/13 职场文书
安全生产学习心得体会
2016/01/18 职场文书
基于Python实现的购物商城管理系统
2021/04/27 Python