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权威指南 学习笔记之null和undefined
Sep 25 Javascript
node.js中的fs.readlinkSync方法使用说明
Dec 17 Javascript
JS实现可缩放、拖动、关闭和最小化的浮动窗口完整实例
Mar 04 Javascript
JQUERY实现网页右下角固定位置展开关闭特效的方法
Jul 27 Javascript
不同js异步函数同步的实现方法
May 28 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
Nov 06 Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
Apr 26 jQuery
JavaScript原型对象、构造函数和实例对象功能与用法详解
Aug 04 Javascript
react 应用多入口配置及实践总结
Oct 17 Javascript
javascript动态创建对象的属性详解
Nov 07 Javascript
JavaScript提升机制Hoisting详解
Oct 23 Javascript
vue组件内部引入外部js文件的方法
Jan 18 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 编程请选择正确的文本编辑软件
2006/12/21 PHP
PHP验证码类代码( 最新修改,完全定制化! )
2010/12/02 PHP
PHP实现连接设备、通讯和发送命令的方法
2015/10/13 PHP
jQuery jcrop插件截图使用方法
2013/11/20 Javascript
jquery简单倒计时实现方法
2015/12/18 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
AngularJS解决ng界面长表达式(ui-set)的方法分析
2016/11/07 Javascript
jQuery Ajax请求后台数据并在前台接收
2016/12/10 Javascript
node.js 和HTML5开发本地桌面应用程序
2016/12/13 Javascript
react 父组件与子组件之间的值传递的方法
2017/09/14 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
2018/11/25 Javascript
全局安装 Vue cli3 和 继续使用 Vue-cli2.x操作
2020/09/08 Javascript
nodejs使用Sequelize框架操作数据库的实现
2020/10/21 NodeJs
[48:24]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第一场 12.09
2020/12/12 DOTA
python统计字符串中指定字符出现次数的方法
2015/04/04 Python
点球小游戏python脚本
2018/05/22 Python
opencv python 基于KNN的手写体识别的实例
2018/08/03 Python
python retrying模块的使用方法详解
2019/09/25 Python
PyTorch的SoftMax交叉熵损失和梯度用法
2020/01/15 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
python集合删除多种方法详解
2020/02/10 Python
Flask中sqlalchemy模块的实例用法
2020/08/02 Python
Pytest如何使用skip跳过执行测试
2020/08/13 Python
小结Python的反射机制
2020/09/28 Python
详解python的super()的作用和原理
2020/10/29 Python
python实现模拟器爬取抖音评论数据的示例代码
2021/01/06 Python
html5教你做炫酷的碎片式图片切换 (canvas)
2017/07/28 HTML / CSS
中国高端鲜花第一品牌:roseonly(一生只送一人)
2017/02/12 全球购物
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
运动会获奖感言
2014/02/11 职场文书
办公室员工岗位工作职责
2014/03/10 职场文书
态度决定一切演讲稿
2014/05/20 职场文书
七一建党节演讲稿
2014/09/11 职场文书
离婚起诉状范本
2015/05/19 职场文书
2016公司年会主持词
2015/07/01 职场文书
Nginx反向代理配置的全过程记录
2021/06/22 Servers