Vue.js学习笔记 第六篇 内置属性
computed属性
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://unpkg.com/vue"></script>
</head>
<body>
<div id="app-1">
<p>初始字符串:{{ content }}</p>
<p>计算后字符串:{{ reversedContent }}</p>
</div>
<script type="text/javascript">
var vm1 = new Vue({
el: '#app-1',
data: {
content: 'TanSea'
},
computed: {
reversedContent: function() {
return this.content.split('').reverse().join('')
}
}
})
</script>
</body>
</html>
Vue对象实例化时,之前接触过了el、data、methods,这里再介绍一个computed
computed的定义和methods的定义是一样的,但是在理解上可以理解为methods是类的方法,computed是类的属性
但是,computed默认是没有set方法的,我们可以显式的给他定义一个
<div id="app-2">
<p>初始字符串:{{ content }}</p>
<p>计算后字符串:{{ reversedContent }}</p>
</div>
<script type="text/javascript">
var vm2 = new Vue({
el: '#app-2',
data: {
content: 'TanSea'
},
computed: {
reversedContent: {
get: function() {
return this.content.split('').reverse().join('')
},
set: function(newValue) {
this.content = newValue
}
}
}
})
</script>
这时,我们就可以在浏览器的控制台输入vm2.reversedContent = 'Hello, World'给他重新赋值了
在大部分情况下,computed和methods是可以互换的,那么他们的区别是什么?
computed 属性会基于它所依赖的数据进行缓存,只有在依赖的数据发生变化时,才会重新取值
methods总是再次执行函数
<div id="app-3">
<p>初始字符串:{{ nowDate }}</p>
<p>methods:{{ mNowDate() }}</p>
<!-- Date.now()是非响应式的依赖数据,computed属性永远不会更新 -->
<p>computed:{{ cNowDate }}</p>
</div>
<script type="text/javascript">
var vm3 = new Vue({
el: '#app-3',
data: {
nowDate: Date.now()
},
methods: {
mNowDate: function() {
return Date.now()
}
},
computed: {
cNowDate: function() {
return Date.now()
}
}
})
</script>
例子使用了Date.now()这种非响应式数据,computed在首次计算完成之后就不再更新
Vue.js学习笔记 第六篇 内置属性的更多相关文章
- Vue.js 学习笔记 第5章 内置指令
本篇目录: 5.1 基本指令 5.2 条件渲染指令 5.3 列表渲染指令 v-for 5.4 方法与事件 5.5 实战:利用计算属性.指令等知识开发购物车 回顾一下第2.2节,我们己经介绍过指令(Di ...
- Vue.js学习笔记 第八篇 组件
全局注册组件 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <ti ...
- Vue.js学习笔记 第七篇 表单控件绑定
本篇主要说明表单控件的数据绑定,这次没有新的知识点 文本框 1.普通文本框 <div id="app-1"> <p><input v-model=&q ...
- Vue.js学习笔记 第四篇 列表渲染
遍历数组和对象 和条件选择一样,循环也和其他语言类似,也尝试着用一个例子解决问题 <!DOCTYPE html> <html> <head> <meta ch ...
- Vue.js学习笔记 第五篇 事件处理
监听事件 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...
- Vue.js学习笔记 第三篇 条件渲染
条件选择 条件选择的用法和其他语言类似,一个例子就能解决所有问题 <!DOCTYPE html> <html> <head> <meta charset=&q ...
- Vue.js 学习笔记 一
本文的Demo和源代码已放到GitHub,如果您觉得本篇内容不错,请点个赞,或在GitHub上加个星星! https://github.com/zwl-jasmine95/Vue_test 以下所有知 ...
- Vue.js学习笔记(2)vue-router
vue中vue-router的使用:
- vue.js 学习笔记3——TypeScript
目录 vue.js 学习笔记3--TypeScript 工具 基础类型 数组 元组 枚举 字面量 接口 类类型 类类型要素 函数 函数参数 this对象和类型 重载 迭代器 Symbol.iterat ...
随机推荐
- php文件加密
1.在线加密 网址:http://www.phpjm.net/encode.html 本人测试过还可以,就是纯加密,没有解密.
- div块级元素获取焦点
在做弹出层时需要对div获取失去焦点 focus blur只是针对form表单控件的,而对于 span , div , li 之类的,则没办法触发它们的动作 几个事件(摘自w3c). blur事件: ...
- ios -解决view遮挡按钮问题
#pragma mark -解决view遮挡按钮问题 //分享按钮赋予 self 最顶部 / web按钮赋予 self 最顶部 / showBtn显示按钮 self 最顶部 / scrollviews ...
- ERROR 1130: Host '' is not allowed to connect to thisMySQL server
今天1网友求助,说自己PHPmyadmin能够正常连接数据库,使用sqlyog报错: ERROR 1130: Host '172.27.214.1' is not allowed to connect ...
- linux/unix下telnet提示Escape character is '^]'的意义
在linux/unix下使用telnet hostname port连接上主机后会提示Escape character is '^]' 这个提示的意思是按Ctrl + ] 会呼出telnet的命令行, ...
- 【转】开发者应该了解的API技术清单
[转载贴] 作为一名开发者,诚然编写代码如同作家提笔挥毫,非常有成就感与乐趣,但同时我也觉得删除代码是件不相伯仲的美事.为什么呢?因为在进行删除工作 时,意味着自己找出了造成干扰的位置,意味着找到了冗 ...
- 巨蟒python全栈开发django7:多表增加和查询
1.回顾内容&&补充 补充1: 补充2: 这个选择的是第二个解释器. 选择第一个的话,只是针对当前的项目,如果再开新项目的话,需要重新下载安装相关的包. 点击保存,因为我们注释掉了,创 ...
- golang 面向对象
深入理解GO语言的面向对象_Golang_脚本之家 https://www.jb51.net/article/94030.htm 深入理解GO语言的面向对象 更新时间:2016年10月04日 10:4 ...
- 2014-08-28——移动端,触摸事件 touchstart、touchmove、touchend、touchcancel
1.Touch事件简介在移动终端上的web页面触屏时会产生ontouchstart.ontouchmove.ontouchend.ontouchcancel 事件,分别对应了触屏开始.拖拽及完成触屏事 ...
- QBuffer简单操作(被看做一个标准的可随机访问的文件,支持信号)
Qt中通过QBuffer类我们可以使用io的方式访问.操作QByteArray中的内容.此时,QByteArray被看做一个标准的可随机访问的文件.例如: QBuffer buffer; char c ...