vue中computed和watch
computed 计算属性
能够监听vue数据上的变化,页面上来就执行一次,每改变一次数据就又触发。在操作数据的时候,会派生出另一个事情
1、函数形式
computed:{
listenArr(){
/*
使用data中数据,自动帮你监听数据的变化
返回的结果就是通过改变数据 做的另一件事情(当数据变化时候需要做的事情)
*/
}
}
2、对象形式
computed:{
listenArr:{
get(){
//获取时候
},
set(newVal){
//修改时候
}
}
}
get是获取的时候执行的操作。set是修改时候执行的操作
应用场景:
比如在用户输入框改变数据的时候过滤数字;
通过数据的变化,来进行累计;
通过单选按钮的变化,来进行判断是否全选等等
优点:指定看哪个数据,就只看哪个数据
PS:需要注意的是 函数名,不要和data中的数据一样。
<div id="app">
全选
<input type="checkbox" v-model="all">
<hr>
<input type="checkbox" v-for="(val,key) in arr" v-model="val.checked">{{arr}}
</div>
new Vue({
el:'#app',
data:{
arr:[
{checked:true},
{checked:false},
{checked:false},
{checked:true}
]
},
//当使用get和set时候,computed中定义的属性为一个对象
//当不使用get和set时候,computed中定义的属性可以是一个函数
computed:{
/*
all(){
return this.arr.every(e=>e.checked);
}
*/
all:{
get(){
//获取的时候执行的操作
return this.arr.every(e=>e.checked);
},
set(newVal){
//修改时候执行的操作。其中newVal 是改变之后的结果
return this.arr.forEach(e=>e.checked = newVal)
}
}
}
});
watch 指定数据监听器
应用场景:
监听路由参数的变化
种localStorage的时候,深度添加等等
<div id="app">
<input type="text" v-model="val">
<ul>
<li v-for="(val,key) in arr">
<input type="checkbox" v-model="val.checked">
</li>
</ul>
{{arr}}
</div>
new Vue({
el:'#app',
data:{
val:'hao123',
arr:[
{checked:true},
{checked:false},
{checked:false},
{checked:false}
]
},
watch:{
arr:{
handler(v){
localStorage.setItem('data',JSON.stringify(v))
},
deep:true
}
}
});
function getStorage(name){
//存储到本地
let data = localStorage.getItem(name) || '[{"checked":false},{"checked":false},{"checked":false}]';
return JSON.parse(data); //[] -> [{}]
}
总结:computed和watch都起到监听一个数据,并进行处理的作用
computed主要用于对同步数据的简单处理,watch则主要用于数据输入时异步操作或者开销较大的情况
computed在监听数据变化时候,上来就会执行一次。而watch页面上来是不会执行的,只有指定数据发生变化才会触发
computed具有缓存性,值不变化会读取缓存,watch无缓存性,值不变化也会执行
vue中computed和watch的更多相关文章
- vue中computed(计算属性)和watch在实现父子组件props同步时的实际区分
vue中computed和watch的对比是一个很有意思的话题. 看过官网教程以后,我们往往更倾向多使用computed.computed优点很多,却在某些时候不太适用. 今天我们就稍微讨论一下,当我 ...
- Vue中computed和watch的区别
在vue中computed和watch的真正区别是:computed产生于它的依赖,而watch产生于它的依赖的变化.只要依赖存在,我们就能访问到其对应的computed属性:但只有依赖发生了改变,我 ...
- Vue中computed分析
Vue中computed分析 在Vue中computed是计算属性,其会根据所依赖的数据动态显示新的计算结果,虽然使用{{}}模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的,在模板中放入太 ...
- vue中computed的作用以及用法
在vue中computed是计算属性,主要作用是把数据存储到内存中,减少不必要的请求,还可以利用computed给子组件的data赋值. 参考地址:https://www.jianshu.com/p/ ...
- Vue中computed,methods 和watch
Vue中的计算属性和方法属性 1.计算属性 computed 模版中可以使用表达式 <div id="example"> {{ message.split('').re ...
- vue中computed与watch的异同
一.computed 和 watch 都可以观察页面的数据变化.当处理页面的数据变化时,我们有时候很容易滥用watch. 而通常更好的办法是使用computed属性,而不是命令是的watch回调. ...
- vue中computed计算属性与methods对象中的this指针
this 指针问题 methods与computed中的this指针 应该指向的是它们自己,可是为什么this指针却可以访问data对象中的成员呢? 因为new Vue对象实例化后data中的成员和c ...
- vue中computed和watch的用法
computed用来监控自己定义的变量,该变量不在data里面声明,直接在computed里面定义,然后就可以在页面上进行双向数据绑定展示出结果或者用作其他处理: computed比较适合对多个变量或 ...
- vue中computed和watch的写法,以及区别
<template> <div class="print"> <div style="color: red"> <p ...
随机推荐
- Github Desktop 克隆新项目 Authentication failed. You may not have permission to access the repository or the repository may ha
原来:ssh://git@github.com/xxx.git 改成:https://git@github.com/xxx.git
- 洛谷SP22343 NORMA2 - Norma(分治,前缀和)
洛谷题目传送门 这题推式子恶心..... 考虑分治,每次统计跨过\(mid\)的所有区间的答案和.\(i\)从\(mid-1\)到\(l\)枚举,统计以\(i\)为左端点的所有区间. 我们先维护好\( ...
- TypeError: __init__() got an unexpected keyword argument 't_command'
python .\manage.py migrate 报错如下 λ python .\manage.py migrateTraceback (most recent call last): File ...
- sql 语句查所有父级
常见问题,给一个记录ID,查出它的所有父级,直到顶级 使用SMSS,sql server,找到一个办法. 思路是分两步,先循环找到所有父级的ID,再用IN查出所有父级 列说明 ID=PK Pare ...
- su命令详解
-----------------------------------------------------------------su 权限设置[root@localhost ~]# vim /etc ...
- bootstrap学习一
bootstrap学习 一.css概览: 1.使用HTML5标准,<!DOCTYPE html>. 2.移动设备优先: <meta name="viewport" ...
- Java 并发集合的实现原理
http://www.codeceo.com/article/the-implementation-principle-of-java-concurrent-collection.html 阿凡卢 ...
- A1113. Integer Set Partition
Given a set of N (> 1) positive integers, you are supposed to partition them into two disjoint se ...
- java开发JDBC连接数据库代码
JDBC连接数据库,创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 这通过java.lang.Class类的静态方法forName(String className)实 ...
- linux less对文件内容进行搜索
[ 可以先用 less 文件名 来打开文件, 然后可以按回车,打开底部命令输入行(即出现一个冒号的位置), 然后可以使用 键盘上的 home 键跳到文件开始,end键跳到最后,PgUp向前翻页,Pg ...