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 ...
随机推荐
- hdu 3715(二分+2-sat)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3715 思路:二分深度,2-sat判断可行性,根据矛盾关系建图:设a=0,a'=1,b=0,b'=1;如 ...
- UILabel标签文字过长时的显示方式
lineBreakMode:设置标签文字过长时的显示方式. label.lineBreakMode = NSLineBreakByCharWrapping; //以字符为显示单位显示,后面部分省略不显 ...
- vmware 安装配置 ,记住这一次不要再问我了。ok?
Linux 安装配置 ,记住这一次不要再问我了.ok? 第一步 选择版本 如果遇到问题无法自动获取的 老男孩教育-李泳谊<youjiu_linux@qq.com> 17:51:43明天开 ...
- PHP中常用的输出语句比较?
面试中经常问到这个,可以看下. 面试问题:比较echo print() print_r() var_dump()? echo(): 可以一次输出多个值,多个值之间用逗号分隔.echo是语言结构(la ...
- html5离线缓存使用
html5 离线缓存使用以及注意事项 1.index.html中加入离线缓存的声明文件 如:<!DOCTYPE html><html manifest="test.appc ...
- Android自定义Button字体颜色和背景颜色
http://blog.csdn.net/breeze666/article/details/7747649
- 《从零开始学Swift》学习笔记(Day 21)——函数返回值
原创文章,欢迎转载.转载请注明:关东升的博客 返回值3种形式:无返回值.单一返回值和多返回值. 无返回值函数 所谓无返回结果,事实上是Void类型,即表示没有数据的类型. 无返回值函数的语法格式有如下 ...
- Oracle DBA的学习(笔记)
1.软件任务分组:系统分析师.系统设计师.程序员.测试人员.开发dba.系统架构师.实施人员. 2.常用设计图:活动图.用例图.类图.序列图. 2010-9-15(dba学习) 1.1 Oracle产 ...
- javafx 普通弹框提示
new Alert(Alert.AlertType.NONE, "xxx不存在", new ButtonType[]{ButtonType.CLOSE}).show();
- MySQL权限系统(二). MySQL提供的特权 Privileges Provided by MySQL
MySQL provides privileges that apply in different contexts and at different levels of operation: Adm ...