computed属性

HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 菜鸟教程(runoob.com)</title>
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<div id="app">
<p>原始字符串: {{ message }}</p>
<p>计算后反转字符串: {{ reversedMessage }}</p>
</div> <script>
var vm = new Vue({
el: '#app',
data: {
message: 'Runoob!'
},
computed: {
// 计算属性的 getter
reversedMessage: function () {
// `this` 指向 vm 实例
return this.message.split('').reverse().join('')
}
}
})
</script>
</body>
</html>

效果:

实例中声明了一个计算属性 reversedMessage 。

提供的函数将用作属性 vm.reversedMessage 的 getter 。

vm.reversedMessage 依赖于 vm.message,在 vm.message 发生改变时,vm.reversedMessage 也会更新。

computed vs methods

HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 菜鸟教程(runoob.com)</title>
<script src="https://cdn.bootcss.com/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<div id="app">
<p>原始字符串: {{ message }}</p>
<p>计算后反转字符串: {{ reversedMessage }}</p>
<p>使用方法后反转字符串: {{ reversedMessage2() }}</p>
</div> <script>
var vm = new Vue({
el: '#app',
data: {
message: 'Runoob!'
},
computed: {
// 计算属性的 getter
reversedMessage: function () {
// `this` 指向 vm 实例
return this.message.split('').reverse().join('')
}
},
methods: {
reversedMessage2: function () {
return this.message.split('').reverse().join('')
}
}
})
</script>
</body>
</html>

效果:

可以说使用 computed 性能会更好,但是如果你不希望缓存,你可以使用 methods 属性。

computed setter

HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue 测试实例 - 菜鸟教程(runoob.com)</title>
<script src="https://unpkg.com/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
<p>{{ site }}</p>
</div> <script>
var vm = new Vue({
el: '#app',
data: {
name: 'Google',
url: 'http://www.google.com'
},
computed: {
site: {
// getter
get: function () {
return this.name + ' ' + this.url
},
// setter
set: function (newValue) {
var names = newValue.split(' ')
this.name = names[0]
this.url = names[names.length - 1]
}
}
}
})
// 调用 setter, vm.name 和 vm.url 也会被对应更新
vm.site = '菜鸟教程 http://www.runoob.com';
document.write('name: ' + vm.name);
document.write('<br>');
document.write('url: ' + vm.url);
</script>
</body>
</html>

效果:

从实例运行结果看在运行 vm.site = '菜鸟教程 http://www.runoob.com'; 时,setter 会被调用, vm.name 和 vm.url 也会被对应更新。

最新文章

  1. 使用WinRar软件制作程序安装包
  2. 使用WMI和性能计数器监控远程服务器权限设置
  3. EL表达式之sessionScope
  4. Ajax 数据库操作
  5. 使用PPT制作交叉密文图
  6. Dubbo在Spring和Spring Boot中的使用
  7. Webpack学习笔记(二)
  8. zookeeper分布式锁
  9. python基础 字典练习
  10. 30天代码day1Data Types
  11. Maven学习3(中央仓库)
  12. SpringMVC 常用applicationContext.xml、web.xml、servlet-mvc.xml简单配置
  13. Lua常用封装方法
  14. vue之文本渲染
  15. 如何从GitHub迁移到GitLab?
  16. 我对Web开发的认识
  17. 最全面的 Android 编码规范指南
  18. [Android Pro] android root权限破解分析
  19. Pandas:时间数据的季节分析
  20. Node.js小白开路(一)-- events篇

热门文章

  1. linux系统初始化——busybox的inittab文件格式说明
  2. c#byte数组和string类型转换
  3. js 清空div
  4. 解决ie8下面placeholder显示问题
  5. 洛谷 [P3723] 礼物
  6. 17.2.10 NOIP模拟赛 聪哥的工资
  7. Controller方法返回值
  8. 关于ping以及TTL的分析【转】
  9. [Oracle] Lock&amp;Latch梳理
  10. Sprak RDD简单应用