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中的public和private对象,即static修饰符
Jan 18 Javascript
疯狂Jquery第一天(Jquery学习笔记)
May 11 Javascript
javascript间隔定时器(延时定时器)学习 间隔调用和延时调用
Jan 13 Javascript
详解JavaScript基于面向对象之继承实例
Dec 16 Javascript
Window.Open打开窗体和if嵌套代码
Apr 15 Javascript
vue.js入门教程之绑定class和style样式
Sep 02 Javascript
js判断价格,必须为数字且不能为负数的实现方法
Oct 07 Javascript
Angular实现点击按钮后在上方显示输入内容的方法
Dec 27 Javascript
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
Aug 22 Javascript
详解javascript函数写法大全
Mar 25 Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
Aug 03 Javascript
用几道面试题来看JavaScript执行机制
Apr 30 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
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
php HandlerSocket的使用
2011/05/02 PHP
destoon实现调用图文新闻的方法
2014/08/21 PHP
ThinkPHP和UCenter接口冲突的解决方法
2016/07/25 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
PHP数组常用函数实例小结
2018/08/20 PHP
php workerman定时任务的实现代码
2018/12/23 PHP
php和nginx交互实例讲解
2019/09/24 PHP
javascript iframe内的函数调用实现方法
2009/07/19 Javascript
javascript模拟地球旋转效果代码实例
2013/12/02 Javascript
浅谈JavaScript函数参数的可修改性问题
2013/12/05 Javascript
深入理解Javascript里的依赖注入
2014/03/19 Javascript
jquery输入数字随机抽奖特效的简单实现代码
2016/06/10 Javascript
多种jQuery绑定事件的实现方式
2016/06/13 Javascript
jQuery插件简单学习实例教程
2016/07/01 Javascript
实现两个文本框同时输入的实例
2017/09/25 Javascript
微信小程序实现原生步骤条
2019/07/25 Javascript
利用webpack理解CommonJS和ES Modules的差异区别
2020/06/16 Javascript
[00:12]DAC2018 Miracle-站上中单舞台,他能否再写奇迹?
2018/04/06 DOTA
Python中实现远程调用(RPC、RMI)简单例子
2014/04/28 Python
Python中atexit模块的基本使用示例
2015/07/08 Python
Django中传递参数到URLconf的视图函数中的方法
2015/07/18 Python
详解Python进程间通信之命名管道
2017/08/28 Python
Python实现按学生年龄排序的实际问题详解
2017/08/29 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
2018/03/04 Python
利用Pandas和Numpy按时间戳将数据以Groupby方式分组
2019/07/22 Python
节日快乐! Python画一棵圣诞树送给你
2019/12/24 Python
资生堂美国官网:Shiseido美国
2016/09/02 全球购物
Farfetch美国:奢侈品牌时尚购物平台
2019/05/02 全球购物
MVC的各个部分都有那些技术来实现?如何实现?
2016/04/21 面试题
Java的类与C++的类有什么不同
2014/01/18 面试题
党章学习思想汇报
2014/01/14 职场文书
《石榴》教学反思
2014/03/02 职场文书
母婴店促销方案
2014/03/05 职场文书
2014年青年志愿者工作总结
2014/12/09 职场文书
SQL Server中使用表变量和临时表
2022/05/20 SQL Server