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 ...
随机推荐
- 654. Maximum Binary Tree
654. Maximum Binary Tree 题目大意: 意思就是给你一组数,先选一个最大的作为根,这个数左边的数组作为左子树,右边的数组作为右子树,重复上一步. 读完就知道是递归了. 这个题真尼 ...
- Billiard CFR484 div2 (数论)
就是一个点从开始的点在一个矩形内往某个方向一直运动,如果碰到了矩形的边,那么就反弹,我们可以把这个矩形拓展开,那么就是问题变成了我有没有一个点,这个点的坐标(Tx, Ty)满足n|Tx,m|Ty 那么 ...
- This license xxx has been cancelled 解决
上节回顾:JetBrains全家桶破解思路 hosts屏蔽一下即可,Linux是:/etc/hosts 0.0.0.0 account.jetbrains.com 重新输入Code即可,最后补一个地址 ...
- QML学习笔记(六)- 简单计时器和定时器
做一个简单的qml计时器和定时器,左键触发计时,右键触发定时 GitHub:八至 作者:狐狸家的鱼 本文链接:QML学习笔记(六)- 简单计时器和定时器 左键点击按钮,触发计时器,中键可以暂停计时,同 ...
- ajax访问服务器的基础格式写法
$("#submit").click(function( $.ajax({ url: "server/deleteHandler.ashx",//选择路径, d ...
- A1134. Vertex Cover
A vertex cover of a graph is a set of vertices such that each edge of the graph is incident to at le ...
- 【洛谷P1903】数颜色
题目大意:给定一个长度为 N 的序列,每个点有一个颜色.现给出 M 个操作,支持单点修改颜色和询问区间颜色数两个操作. 题解:学会了序列带修改的莫队. 莫队本身是不支持修改的.带修该莫队的本质也是对询 ...
- 在 vue.js 中动态绑定 v-model
在最近的项目中(基于vue),有一个需求就是通过 v-for 动态生成 input.在正常情况下,页面中的input数量是固定的,而且每个input绑定的v-model也是固定的,我们可以在 data ...
- Flask form前后端交互消息闪现
模拟场景如果当用户注册时输入错误而由于form表单是同步提的交跳转到另一个网页时提示注册失败这时用户还需返回注册页面重新填写大大降低了客户体验,消息闪现能伪装成异步(实际还是同步)就是自己提交给自己然 ...
- js怎么获取微信浏览器内容的高度
通过window对象来得到窗口相关的内外款高度信息,如下: outerHeight属性设置或返回一个窗口的外部高度,包括所有界面元素(如工具栏/滚动条).outerWidth属性设置或返回窗口的外部宽 ...