Vue.js 计算属性(computed)
Vue.js 计算属性(computed)
如果在模板中使用一些复杂的表达式,会让模板显得过于繁重,且后期难以维护。对此,vue.js 提供了计算属性(computed),你可以把这些复杂的表达式写到里面。
实例 1
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue.js 计算属性(computed)</title>
<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="stylesheet" href="css/mui.min.css">
<title>Vue.js 计算属性(computed)</title>
<script src="http://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script>
</head>
<body>
<div id="app">
a={{ a }}, b={{ b }} <!-- a = 1; b = 2; -->
</div>
<script>
var app= new Vue({
el: '#app',
data: {
a: 1
},
computed: {
b: function () {
return this.a + 1 //返回的值是2 所以b=2;
}
}
})
</script>
</body>
</html>
计算属性 缓存
缓存是计算属性的一大特点,使用计算属性时,每次获取的值是基于依赖的缓存值,也就是说,当数据源未发生变动时,获取的值将一直是缓存值。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue.js 计算属性(computed)</title>
<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="stylesheet" href="css/mui.min.css">
<title>Vue.js 计算属性(computed)</title>
<script src="http://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script>
</head>
<body>
<div id="app">
a={{ a }}, b={{ b }} <!-- a = 1; b = 2; -->
</div>
<script>
var vm = new Vue({
el: '#app',
data: {
a: 1
},
computed: {
b: function () {
return this.a + 1 //返回的值是2 ,b=2 因为 b 是依赖于 a 的;
}
}
})
vm.b = 8;
</script>
</body>
</html>
上述实例中,我们对 b 进行了重新赋值,但是没有改变a的值,因为 b 是依赖于 a 的,所以最终 b 的结果还是2。
计算属性与methods的区别
计算属性能实现的功能,使用方法(methods)也能实现,但两者还是有本质的不同,区别如下:
计算属性获取的是缓存值,而methods是直接调用函数进行计算所得。
计算属性中的函数在dom加载后马上执行,并将结果显示在页面上。methods中的函数需要一定的触发条件,否则不会执行。
计算属性 Getter 和 Setter 方法
vue.js 计算属性有两个方法,分别为 getter 和 setter,当没有指明方法时,默认使用 getter。
实例1中 computed 里面的代码也可以写成:
computed: {
b: {
get:function () {
return this.a + 1
}
}
}
运行结果是一样的。
实例 3
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Vue.js 计算属性(computed)</title>
<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<link rel="stylesheet" href="css/mui.min.css">
<title>Vue.js 计算属性(computed)</title>
<script src="http://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script>
</head>
<body>
<div id="app">{{message}}</div> <!-- 显示为my second lesson -->
<script>
var vm = new Vue({
el: '#app',
data: {
title: 'my first lesson'
},
computed: {
message: {
// getter
get: function () {
return this.title
},
//setter
set: function (newValue) {
this.title = newValue
}
}
}
})
vm.message = 'my second lesson'; // vue.js会执行set方法,从而改变message的值,
//如果不使用set方法,message值为“my first lesson”。
</script>
</body>
</html>
上述实例中,在给message重新赋值时,vue.js会执行set方法,从而改变message的值,如果不使用set方法,message值为“my first lesson”。
Vue.js 计算属性(computed)的更多相关文章
- Vue.js 计算属性computed和methods的区别
在vue.js中,有methods和computed两种方式来动态当作方法来用的 如下: 两种方式在这种情况下的结果是一样的 写法上的区别是computed计算属性的方式在用属性时不用加(),而met ...
- Vue.js 计算属性是什么
Vue.js 计算属性是什么 一.总结 一句话总结: 模板 表达式 维护 在模板中表达式非常便利,但是它们实际上只用于简单的操作.模板是为了描述视图的结构.在模板中放入太多的逻辑会让模板过重且难以维护 ...
- Vue.js 计算属性
Vue.js 计算属性 使用计算属性的实例: <!DOCTYPE html> <html> <head> <meta cahrset="utf-8& ...
- vue的计算属性computed和监听器watch
<template> <div> this is A.vue <br> <!--计算属性--> <label for="msg" ...
- Vue之计算属性Computed和属性监听Watch,Computed和Watch的区别
一. 计算属性(computed) 1.计算属性是为了模板中的表达式简洁,易维护,符合用于简单运算的设计初衷. 例如: <div id="app"> {{ myname ...
- vue.js计算属性 vs methods
计算属性:Vue.js 模板内的表达式非常便利,但是缺点就是只能用于简单的运算,如果模板中有太多的逻辑运算会让模板不堪重负且难以维护.恰恰计算属性可以处理复杂的逻辑运算,也就是说对于任何复杂逻辑你都应 ...
- 浅谈Vue中计算属性computed的实现原理
虽然目前的技术栈已由Vue转到了React,但从之前使用Vue开发的多个项目实际经历来看还是非常愉悦的,Vue文档清晰规范,api设计简洁高效,对前端开发人员友好,上手快,甚至个人认为在很多场景使用V ...
- vue中计算属性computed方法内传参
vue中computed计算属性无法直接进行传参 如果有传参数的需求比如说做数据筛选功能可以使用闭包函数(也叫匿名函数)实现 例如: 在上篇博客vue安装使用最后的成绩表练习中的过滤功能的实现: &l ...
- Vue.js 计算属性的秘密
计算属性是一个很邪门的东西,只要在它的函数里引用了 data 中的某个属性,当这个属性发生变化时,函数仿佛可以嗅探到这个变化,并自动重新执行. 上述代码会源源不断的打印出 b 的值.如果希望 a 依赖 ...
随机推荐
- RK3288][Android6.0] 调试笔记 --- 关闭按键音后无法录音问题【转】
本文转载自:http://blog.csdn.net/kris_fei/article/details/70052413 Platform: ROCKCHIPOS: Android 6.0Kernel ...
- Bing必应地图中国API-画线与添加多边形
Bing必应地图中国API-画线与添加多边形 2011-05-24 14:31:20| 分类: Bing&Google|字号 订阅 在必应地图上画线的功能应用也很广泛:显示从出发地到 ...
- codeforces 963B Destruction of a Tree
B. Destruction of a Tree time limit per test 1 second memory limit per test 256 megabytes input stan ...
- 理解C#泛型(转)
理解C#泛型 http://www.cnblogs.com/wilber2013/p/4292240.html 泛型中的类型约束和类型推断 http://www.cnblogs.com/wilber2 ...
- [App Store Connect帮助]六、测试 Beta 版本(3.3)管理测试员:查看测试员信息
如果您使用“TestFlight Beta 版测试”,您可以查看关于测试员的信息,并衡量测试员的参与度. 必要职能:“帐户持有人”职能.“管理”职能.“App 管理”职能.“开发者”职能或“营销”职能 ...
- serlvet HttpServletRequest
1.http://localhost/az/servlet/TestResponse out.print("getServletPath:"+request.getServletP ...
- [APIO2007]动物园
题目描述 新建的圆形动物园是亚太地区的骄傲.圆形动物园坐落于太平洋的一个小岛上,包含一大圈围栏,每个围栏里有一种动物. 你是动物园的公共主管.你要做的是,让每个来动物园的人都尽可能高兴.今天有一群小朋 ...
- D. Vasya And The Matrix(Educational Codeforces Round 48)
D. Vasya And The Matrix time limit per test2 seconds memory limit per test256 megabytes inputstandar ...
- 2017青岛网络赛1008 Chinese Zodiac
Chinese Zodiac Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others) T ...
- 409 Longest Palindrome 最长回文串
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串.在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串.注意:假设字符串的长度不会超过 ...