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 相关文章推荐
提高代码性能技巧谈—以创建千行表格为例
Jul 01 Javascript
javascript/jquery获取地址栏url参数的方法
Mar 05 Javascript
JavaScript截取字符串的2个函数介绍
Aug 27 Javascript
javascript结合fileReader 实现上传图片
Jan 30 Javascript
JavaScript中return false的用法
Mar 12 Javascript
NPM 安装cordova时警告:npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to
Dec 20 Javascript
js实现同一个页面,多个enter事件绑定的示例
Oct 10 Javascript
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
Mar 29 Javascript
vue.js高德地图实现热点图代码实例
Apr 18 Javascript
使用vue-cli3 创建vue项目并配置VS Code 自动代码格式化 vue语法高亮问题
May 14 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
Feb 14 Javascript
微信小程序实现上拉加载功能示例【加载更多数据/触底加载/点击加载更多数据】
May 29 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
smarty简单分页的实现方法
2014/10/27 PHP
PHP PDOStatement::setAttribute讲解
2019/02/01 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
Prototype源码浅析 String部分(三)之HTML字符串处理
2012/01/15 Javascript
js随机颜色代码的多种实现方式
2013/04/23 Javascript
点击显示指定元素隐藏其他同辈元素的方法
2014/02/19 Javascript
一个JavaScript防止表单重复提交的实例
2014/10/21 Javascript
jQuery使用fadein方法实现渐出效果实例
2015/03/27 Javascript
js实现精美的银灰色竖排折叠菜单
2015/05/16 Javascript
纯js实现无限空间大小的本地存储
2015/06/18 Javascript
js代码实现无缝滚动(文字和图片)
2015/08/20 Javascript
对象不支持indexOf属性或方法的解决方法(必看)
2017/05/28 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
jquery实现倒计时小应用
2017/09/19 jQuery
layui表单提交到后台自动封装到实体类的方法
2019/09/12 Javascript
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
vue项目强制清除页面缓存的例子
2019/11/06 Javascript
单线程JavaScript实现异步过程详解
2020/05/19 Javascript
jQuery HTML设置内容和属性操作实例分析
2020/05/20 jQuery
vue 实现动态路由的方法
2020/07/06 Javascript
react实现复选框全选和反选组件效果
2020/08/25 Javascript
Vue实现圆环进度条的示例
2021/02/06 Vue.js
[01:08]DOTA2“血战之命”预告片
2017/08/12 DOTA
python安装mysql-python简明笔记(ubuntu环境)
2016/06/25 Python
详解python opencv、scikit-image和PIL图像处理库比较
2019/12/26 Python
python自动生成证件号的方法示例
2021/01/14 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
2021/03/01 Python
css 如何让背景图片拉伸填充避免重复显示
2013/07/11 HTML / CSS
New Balance天猫官方旗舰店:始于1906年,百年慢跑品牌
2017/11/15 全球购物
汽车装潢店创业计划书范文
2014/02/05 职场文书
党校培训自我鉴定范文
2014/03/20 职场文书
村委会贫困证明范文
2014/09/21 职场文书
会计工作能力自我评价
2015/03/05 职场文书
新年晚会主持词开场白
2015/05/28 职场文书
Pandas-DataFrame知识点汇总
2022/03/16 Python
「租借女友」第2季樱泽墨角色PV&新视觉图公开
2022/03/21 日漫