Vue(七):computed计算属性
简介
计算属性关键词: computed。
计算属性在处理一些复杂逻辑时是很有用的。
实例1
可以看下以下反转字符串的例子:
<div id="app">
{{ message.split('').reverse().join(' | ')}}
</div> <script>
new Vue({
el: '#app',
data: {
message: '上海自来水来自海上'
}
})
</script>

上面例子中模板变的很复杂起来,也不容易看懂理解。
实例2
接下来我们看看使用了计算属性的实例:
<div id="app">
{{message}}
<br>
{{reverseMessage}}
</div> <script>
new Vue({
el: '#app',
data: {
message: '上海自来水来自海上'
},
computed:{
// 计算属性的 getter
reverseMessage:function(){
// `this` 指向 vm 实例
return this.message.split('').reverse().join(' | ')
}
}
})
</script>
上面实例中声明了一个计算属性 reversedMessage 。
提供的函数将用作属性 vm.reversedMessage 的 getter 。
vm.reversedMessage 依赖于 vm.message,在 vm.message 发生改变时,vm.reversedMessage 也会更新。
vue.js里computed 和 methods的区别
我们可以使用 methods 来替代 computed,效果上两个都是一样的,但是 computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值。而使用 methods ,在重新渲染的时候,函数总会重新调用执行。
<div id="app">
{{message}}
<br>
{{reverseMessage1()}}
<br> <!--注意方法是要加上()的,而属性不需要-->
{{reverseMessage2}}
</div> <script>
new Vue({
el: '#app',
data: {
message: '上海自来水来自海上'
},
methods:{
reverseMessage1:function(){
// `this` 指向 vm 实例
return this.message.split('').reverse().join(' # ')
}
},
computed:{
reverseMessage2:function(){
// `this` 指向 vm 实例
return this.message.split('').reverse().join(' | ')
}
}
})
</script>
可以说使用 computed 性能会更好,但是如果你不希望缓存,你可以使用 methods 属性。
computed setter
computed 属性默认只有 getter ,不过在需要时你也可以提供一个 setter :
<div id="app">
<p>{{ userinfo }}</p>
</div> <script>
var vm = new Vue({
el: '#app',
data: {
username: '刘凯',
department: '财务部'
},
computed: {
userinfo: {
// getter
get: function () {
return this.username + '#' + this.department
},
// setter
set: function (newinfo) {
var infos = newinfo.split('#')
this.username = infos[0]
this.department = infos[infos.length - 1]
}
}
}
})
// 调用 setter, vm.username 和 vm.department 也会被对应更新
vm.userinfo = '张晓晓#销售部';
document.write('username: ' + vm.username);
document.write('<br>');
document.write('department: ' + vm.department);
</script>
vm.userinfo = '张晓晓#销售部'这一行代码是关键,分别注释掉和打开注释运行这段代码,分别会出现一下两种结果
刘凯#财务部 username: 刘凯
department: 财务部
张晓晓#销售部 username: 张晓晓
department: 销售部
Vue(七):computed计算属性的更多相关文章
- Vue之computed计算属性
demo.html <!DOCTYPE html> <html lang="en" xmlns:v-bind="http://www.w3.org/19 ...
- Vue的computed计算属性是如何实现的
一个开始 有如下代码,full是一个计算属性,开始,他的值是'hello world',1s后,msg变成了‘I like’, full的值同步变成了'I like world';其原理解析来看一下. ...
- Vue中computed计算属性
话不多说,使用方法直接上代码//在模板中调用computedTest这个函数,切记不要在函数后添加()<template> <div class="home"&g ...
- Vue中computed(计算属性)、methods、watch的区别
实现效果:字符串的动态拼接 methods方法 html: <div id="app"> <!-- 监听到文本框数据的改变 --> <input ty ...
- vue的computed计算属性
computed可定义一些函数,这些函数叫做[计算属性] 只要data里面的数据发生变化computed会同步改变 引用[计算属性]时不要加 () ,应当普通属性使用 例:console.log(t ...
- Vue的computed(计算属性)使用实例之TodoList
最近倒腾了一会vue,有点迷惑其中methods与computed这两个属性的区别,所以试着写了TodoList这个demo,(好土掩面逃~); 1. methods methods类似react中组 ...
- vue中computed计算属性与methods对象中的this指针
this 指针问题 methods与computed中的this指针 应该指向的是它们自己,可是为什么this指针却可以访问data对象中的成员呢? 因为new Vue对象实例化后data中的成员和c ...
- 小白学习vue第三天,从入门到精通(computed计算属性)
computed计算属性 <body> <div id="app"> <div>{{myName}}</div> </div& ...
- 深入理解 Vue Computed 计算属性
Computed 计算属性是 Vue 中常用的一个功能,我们今天来说一下他的执行过长 拿官网简单的例子来看一下: <div id="example"> <p> ...
随机推荐
- AndroidStudio 中查看获取MD5和SHA1值以及如何查看手机应用信息以及读取*.db数据库里面数据
查看获取MD5和SHA1值具体操作方式链接 查看获取MD5和SHA1值实际操作命令CMD语句: C:\Users\Administrator>cd .android C:\Users\Admin ...
- ReactNative踩坑日志——代码执行方式(面向对象)
在ReactNative中,是以面向对象的方式执行代码的.处于同一{}內的代码以对象的形式执行,也就是说,程序虽然会自上而下执行代码,但是它会保证当前整个代码块內的语句执行完毕才执行下一代码块. 举个 ...
- XML与JSON使用区别
一:XML XML 文档形成了一种树结构,它从"根部"开始,然后扩展到"枝叶". XML 文档形成一种树结构 XML 文档必须包含根元素.该元素是所有其他元素的 ...
- Ajax实现文件上传的临时垃圾文件回收策略
转载请注明原文出处:http://www.cnblogs.com/ygj0930/p/6126240.html 在我们web开发过程中,一个很重要的技术就是Ajax(异步传输).Ajax通过把数据从网 ...
- VIM自定义快捷键 abort
"在选择模式下系统级复制 vmap ,c "+y<ESC>vmap ,C "+Y<ESC>"在选择模式下系统级剪切vmap ,x x:l ...
- YAML格式的语法
基本格式 用空格缩进, 不能用tab 用#标记注释 列表: 用短划(-)标记元素 映射: 用冒号(:)分隔key, value. 如果写在一行, 需要用逗号分隔并前后加花括号 字符串: 不加引号, 加 ...
- Struts1与Struts2的那些事
一.概述 Struts1以ActionServlet作为核心控制器,由ActionServlet负责拦截用户的全部请求.Struts1框架有3个重要组成部分:Action.ActionForm和Act ...
- C#代码实现邮箱验证C#中及一些常用的正则表达式
.验证用户名和密码:("^[a-zA-Z]\w{5,15}$")正确格式:"[A-Z][a-z]_[0-9]"组成,并且第一个字必须为字母6~16位: .验证电 ...
- Xshell连接Ubuntu失败问题
转自:https://www.linuxidc.com/Linux/2017-08/146222.htm Xshell是一个安全终端模拟软件,可以进行远程登录.我使用XShell的主要目的是在Wind ...
- 无法启动程序,因为计算机丢失D3DCOMPILER_47.dll 的解决方法
这个原因应该是windows update在更新的时出现错误导致的 解决方法是安装 KB4019990 更新包. 网址如下:http://www.catalog.update.microsoft.c ...