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 相关文章推荐
jQuery后代选择器用法实例
Dec 23 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
Jan 07 Javascript
JS+CSS实现可以凹陷显示选中单元格的方法
Mar 02 Javascript
javascript实现动态导入js与css等静态资源文件的方法
Jul 25 Javascript
jQuery实现折叠、展开的菜单组效果代码
Sep 16 Javascript
Javascript农历与公历相互转换的简单实例
Oct 09 Javascript
JS实现的模仿QQ头像资料卡显示与隐藏效果
Apr 07 Javascript
详解webpack 多页面/入口支持&amp;公共组件单独打包
Jun 29 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
Feb 23 Javascript
jQuery Raty星级评分插件使用方法实例分析
Nov 25 jQuery
vue实现列表滚动的过渡动画
Jun 29 Javascript
Vue router配置与使用分析讲解
Dec 24 Vue.js
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
windows xp下安装pear
2006/12/02 PHP
php foreach 参数强制类型转换的问题
2010/12/10 PHP
PHP的fsockopen、pfsockopen函数被主机商禁用的解决办法
2014/07/08 PHP
php查找指定目录下指定大小文件的方法
2014/11/28 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
php实现数组重复数字统计实例
2018/09/30 PHP
JS 自动安装exe程序
2008/11/30 Javascript
IE无法设置短域名下Cookie
2010/09/23 Javascript
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
JavaScript事件委托的技术原理探讨示例
2014/04/17 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
JS获取及设置TextArea或input文本框选择文本位置的方法
2015/03/24 Javascript
深入理解jQuery layui分页控件的使用
2016/08/17 Javascript
js实现固定宽高滑动轮播图效果
2017/01/13 Javascript
js实现简单的网页换肤效果
2017/01/18 Javascript
Javascript同时声明一连串(多个)变量的方法
2017/01/23 Javascript
简单实现js悬浮导航效果
2017/02/05 Javascript
JQuery页面随滚动条动态加载效果的简单实现(推荐)
2017/02/08 Javascript
d3.js 地铁轨道交通项目实战
2019/11/27 Javascript
Python中请使用isinstance()判断变量类型
2014/08/25 Python
Python实现生成简单的Makefile文件代码示例
2015/03/10 Python
Django中模型Model添加JSON类型字段的方法
2015/06/17 Python
详解Django+uwsgi+Nginx上线最佳实战
2019/03/14 Python
详解用python写一个抽奖程序
2019/05/10 Python
Python generator生成器和yield表达式详解
2019/08/08 Python
django框架ModelForm组件用法详解
2019/12/11 Python
用pytorch的nn.Module构造简单全链接层实例
2020/01/14 Python
Python使用socket模块实现简单tcp通信
2020/08/18 Python
CSS3截取字符串实例代码【推荐】
2018/06/07 HTML / CSS
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
全球最大的房车租赁市场:Outdoorsy
2018/09/19 全球购物
行政专员岗位职责范本
2014/08/26 职场文书
体育运动会广播稿
2014/10/05 职场文书
工厂门卫岗位职责
2015/04/13 职场文书
写一个Python脚本自动爬取Bilibili小视频
2021/04/24 Python
python模板入门教程之flask Jinja
2022/04/11 Python