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学习笔记9 prototype封装继承
Jan 11 Javascript
JavaScript高级程序设计阅读笔记(六) ECMAScript中的运算符(二)
Feb 27 Javascript
在jQuery中 常用的选择器介绍
Apr 16 Javascript
SinaEditor使用方法详解
Dec 28 Javascript
js获取 type=radio 值的方法
May 09 Javascript
JSON与XML优缺点对比分析
Jul 17 Javascript
JS获取复选框的值,并传递到后台的实现方法
May 30 Javascript
20行js代码实现的贪吃蛇小游戏
Jun 20 Javascript
基于Vue的移动端图片裁剪组件功能
Nov 28 Javascript
js input输入百分号保存数据库失败的解决方法
May 26 Javascript
jQuery实现模糊搜索功能的方法分析
Jun 29 jQuery
jQuery访问json文件中数据的方法示例
Jan 28 jQuery
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
异世界新番又来了,同样是从零开始,男主的年龄降到5岁
2020/04/09 日漫
PHP中实现中文字符进制转换原理分析
2011/12/06 PHP
win7 64位系统 配置php最新版开发环境(php+Apache+mysql)
2014/08/15 PHP
微信access_token的获取开发示例
2015/04/16 PHP
Yii2超好用的日期和时间组件(值得收藏)
2016/05/05 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
2017/05/02 PHP
Laravel 框架路由原理与路由访问实例分析
2020/04/14 PHP
jQuery DIV弹出效果实现代码
2009/07/03 Javascript
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
JQuery入门——移除绑定事件unbind方法概述及应用
2013/02/05 Javascript
setInterval()和setTimeout()的用法和区别示例介绍
2013/11/17 Javascript
ParseInt函数参数设置介绍
2014/01/02 Javascript
JQuery实现table行折叠效果以JSON做数据源
2014/05/26 Javascript
javascript实现平滑无缝滚动
2020/08/09 Javascript
JS实现的RGB网页颜色在线取色器完整实例
2016/12/21 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
Vue.js实现模拟微信朋友圈开发demo
2017/04/20 Javascript
详解webpack 入门与解析
2018/04/09 Javascript
推荐一个基于Node.js的表单验证库
2019/02/15 Javascript
python3实现zabbix告警推送钉钉的示例
2019/02/20 Python
python的常见矩阵运算(小结)
2019/08/07 Python
Python执行时间的几种计算方法
2020/07/31 Python
接口中的方法可以是abstract的吗
2015/07/23 面试题
行政经理岗位职责
2013/11/09 职场文书
商场端午节活动方案
2014/01/29 职场文书
机械设计毕业生自荐信
2014/02/02 职场文书
公司年会主持词
2014/03/22 职场文书
岗位聘任书范文
2014/03/29 职场文书
关爱留守儿童标语
2014/06/18 职场文书
社会学专业求职信
2014/07/17 职场文书
蛋糕店创业计划书范文
2014/09/21 职场文书
教师三严三实对照检查材料
2014/09/25 职场文书
担保书格式
2015/01/20 职场文书
活动新闻稿范文
2015/07/17 职场文书
客户答谢会致辞
2015/07/30 职场文书
Python如何使用logging为Flask增加logid
2021/03/30 Python