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 操作select下拉列表框的一点小经验
Mar 20 Javascript
JQuery Ajax通过Handler访问外部XML数据的代码
Jun 01 Javascript
『jQuery』取指定url格式及分割函数应用
Apr 22 Javascript
JS可以控制样式的名称写法一览
Jan 16 Javascript
jquery序列化表单去除指定元素示例代码
Apr 10 Javascript
jquery实现左右滑动式轮播图
Mar 02 Javascript
使用SVG基本操作API的实例讲解
Sep 14 Javascript
AngularJS 的$timeout服务示例代码
Sep 21 Javascript
Validform验证时可以为空否则按照指定格式验证
Oct 20 Javascript
js+SVG实现动态时钟效果
Jul 14 Javascript
javascript刷新父页面方法汇总详解
Oct 10 Javascript
Javascript Symbol原理及使用方法解析
Oct 22 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+ajax实现的点击浏览量加1
2015/04/16 PHP
ThinkPHP 模板substr的截取字符串函数详解
2017/01/09 PHP
laravel 获取某个查询的查询SQL语句方法
2019/10/12 PHP
懒就要懒到底——鼠标自动点击(含时间判断)
2007/02/20 Javascript
jQuery实现类似滑动门切换效果的层切换
2013/09/23 Javascript
用js将内容复制到剪贴板兼容浏览器
2014/03/18 Javascript
jQuery+PHP+MySQL二级联动下拉菜单实例讲解
2015/10/27 Javascript
利用jquery制作滚动到指定位置触发动画
2016/03/26 Javascript
JavaScript实现Base64编码转换
2016/04/23 Javascript
jQuery页面加载初始化的3种方法(推荐)
2016/06/02 Javascript
jQuery模拟Marquee实现无缝滚动效果完整实例
2016/09/29 Javascript
json定义及jquery操作json的方法
2016/10/03 Javascript
js鼠标跟随运动效果
2017/03/11 Javascript
vue利用better-scroll实现轮播图与页面滚动详解
2017/10/20 Javascript
浅谈JS对象添加getter与setter的5种方法
2018/06/09 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
2019/06/03 Javascript
layui的select联动实现代码
2019/09/28 Javascript
详解微信小程序之提高应用速度小技巧
2020/01/07 Javascript
[01:06]欢迎来到上海,TI9
2018/08/26 DOTA
python网络编程之读取网站根目录实例
2014/09/30 Python
python多进程操作实例
2014/11/21 Python
python实现马耳可夫链算法实例分析
2015/05/20 Python
使用Python将数组的元素导出到变量中(unpacking)
2016/10/27 Python
python3.6使用pymysql连接Mysql数据库
2018/05/25 Python
Django 框架模型操作入门教程
2019/11/05 Python
numpy中三维数组中加入元素后的位置详解
2019/11/28 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
2020/01/10 Python
Python字符串中删除特定字符的方法
2020/01/15 Python
Python类中self参数用法详解
2020/02/13 Python
Bowflex美国官方网站:高级家庭健身器材
2017/12/22 全球购物
开展创先争优活动总结
2014/08/28 职场文书
2014入党积极分子批评与自我批评思想汇报
2014/09/20 职场文书
硕士毕业答辩开场白
2015/05/27 职场文书
施工现场安全管理制度
2015/08/05 职场文书
CSS3实现模糊背景的三种效果示例
2021/03/30 HTML / CSS
Redis Stream类型的使用详解
2021/11/11 Redis