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 相关文章推荐
JS网页播放声音实现代码兼容各种浏览器
Sep 22 Javascript
js图片处理示例代码
May 12 Javascript
jQuery实现鼠标经过时出现隐藏层文字链接的方法
Oct 12 Javascript
快速解决js中window.location.href不工作的问题
Nov 02 Javascript
zTree异步加载展开第一级节点的实现方法
Sep 05 Javascript
基于JavaScript实现表格滚动分页
Nov 22 Javascript
vue脚手架搭建项目的兼容性配置详解
Jul 17 Javascript
pm2发布node配置文件ecosystem.json详解
May 15 Javascript
layer弹出层扩展主题的方法
Sep 11 Javascript
javascript 构建模块化开发过程解析
Sep 11 Javascript
layui问题之自动滚动二级iframe页面到指定位置的方法
Sep 18 Javascript
详解如何修改 node_modules 里的文件
May 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
点评山进PR-D3L三波段收音机
2021/03/02 无线电
source.php查看源文件
2006/12/09 PHP
自动把纯文本转换成Web页面的php代码
2009/08/27 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
2010/10/25 PHP
浅谈php安全性需要注意的几点事项
2014/07/17 PHP
Zend Framework教程之Application用法实例详解
2016/03/14 PHP
示例详解Laravel重置密码代码重构
2016/08/10 PHP
Grid得到选择行数据的方法总结
2011/01/17 Javascript
js拦截alert对话框另类应用
2013/01/16 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
2014/01/07 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
纯JS实现可拖拽表单的简单实例
2016/09/02 Javascript
jquery点赞功能实现代码 点个赞吧!
2020/05/29 jQuery
vue实现导航栏效果(选中状态刷新不消失)
2017/12/13 Javascript
JS模拟实现哈希表及应用详解
2018/05/04 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
2018/05/17 Javascript
vue实现路由懒加载的3种方法示例
2020/09/01 Javascript
Nest.js散列与加密实例详解
2021/02/24 Javascript
[01:00:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第三场 1月10日
2021/03/11 DOTA
python中stdout输出不缓存的设置方法
2014/05/29 Python
Python中处理字符串之islower()方法的使用简介
2015/05/19 Python
Python实现保证只能运行一个脚本实例
2015/06/24 Python
python动态网页批量爬取
2016/02/14 Python
Windows 8.1 64bit下搭建 Scrapy 0.22 环境
2018/11/18 Python
AmazeUI 面板的实现示例
2020/08/17 HTML / CSS
健身场所或家用健身设备:Life Fitness
2017/11/01 全球购物
美国最流行的男士时尚网站:Touch of Modern
2018/02/05 全球购物
数字天堂软件测试面试题
2012/12/23 面试题
上班睡觉检讨书
2014/01/09 职场文书
中学生期末评语
2014/02/03 职场文书
《我不是最弱小的》教学反思
2014/02/23 职场文书
财政局党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
2015年教师党员公开承诺书
2015/01/22 职场文书
2015年班主任个人工作总结
2015/03/31 职场文书
2019年作为一名实习生的述职报告
2019/09/29 职场文书
Golang 实现获取当前函数名称和文件行号等操作
2021/05/08 Golang