用VUE监听数组和对象的变化
看一下演示代码,先是增加数组和对象。
- <template>
- <div>
- <p>这是我定义的数组</p>
- <div>{{this.arr}}</div>
- <button @click="changeArr">点击这里我就要修改数组里第一个</button>
- <p>这是我的对象</p>
- <div>{{this.haha}}</div>
- <button @click="changeObj">点击这里我就要添加对象的属性</button>
- </div>
- </template>
- <script>
- export default {
- name: "test",
- data() {
- return {
- arr: [0, 1, 2, 3, 4, 5, 6],
- haha: {
- name: "123",
- age: 12,
- story: "从前有座山",
- }
- };
- },
- watch:{
- 'arr':{
- handler:function(val,oldval){
- console.log('修改后',val,'修改前',oldval);
- },
- },
- 'haha':{
- handler:function(val,oldval){
- console.log('修改后',val,'修改前',oldval);
- }
- }
- },
- methods: {
- changeArr() {
- this.arr.push('12332') // 添加数组
- console.log("这是修改之后的数组", this.arr);
- },
- changeObj() {
- this.haha.content = "我是一个小和尚"; // 添加对象
- console.log("这是修改之后的对象", this.haha);
- }
- }
- };
- </script>
由此可见,watch监听到了数组的增加,并没有监听到对象的增加(没有监听到所以视图中的数据并没有发生改变)
接下来修改数组和对象(修改了对象中的value)
- changeArr() {
- this.arr[0]=1232 // 修改数组
- console.log("这是修改之后的数组", this.arr);
- },
- changeObj() {
- this.haha.story = "我是一个小和尚"; // 修改对象的value
- console.log("这是修改之后的对象", this.haha);
- }
用VUE监听数组和对象的变化的更多相关文章
- vue 监听变量或对象
注意:监听的对象必须已经在data中声明了 data: { a: 1, b: 2, c: 3, d: 4, e: { f: { g: 5 } } }, watch: { a: function (va ...
- vue监听数组中某个属性,计算其他属性问题
今天在项目开发中遇到一个根据数组中某个属性变化同时更新另一个属性变化的问题,刚开始代码如下 this.weekList1=r.data.roomProducts; this.weekList1.map ...
- vue 监听对象里的特定数据
vue 监听对象里的特定数据变化 通常是这样写的,只能监听某一个特定数据 watch: { params: function(val) { console.log(val) this.$ajax.g ...
- vue watch监听不到对象,探究 watch 原理
最近使用vue watch时,在某些模块监听不到对象的改变,无法触发回调函数. 解决: 使用watch监听对象时,只能监听到该对象初始化时已存在的key值. 如下例监听user对象,在初始化时没有ag ...
- vue如何监听数组的变化
export function def (obj: Object, key: string, val: any, enumerable?: boolean) { Object.defineProper ...
- vue 监听父子组件传参,对象数据变化
watch:{ 组件传参的字段 :{ handler (newV, oldV){ 这里打印 newV, oldV 就可以看到数据变化了 } , immediate: true, // 重点 deep: ...
- vue数组中对象属性变化页面不渲染问题
问题引入 Vue之所以能够监听Model状态的变化,是因为JavaScript语言本身提供了Proxy或者Object.observe()机制来监听对象状态的变化.但是,对于数组元素的赋值,却没有办法 ...
- vue监听滚动事件,实现滚动监听
在vue中实现滚动监听和原生js无太大差异,下面是一个简单的demo,可在控制台查看结果 <!DOCTYPE html> <html lang="en"> ...
- AngularJS监听数组变化
我们在使用angualr的监听时候,业务的需要我们会去监听一个数组的某一个值得变化,再写逻辑代码.然而我们在使用$scope.$watch("",function(){ })时候会 ...
随机推荐
- rem适配手机
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- MySQL中\g和\G的作用
\g的作用和MySQL中的分号”;"是一样: \G的作用是讲查找到的内容结构旋转90度,变成纵向结构: 下面举例说明,查找数据库中的存在的存储过程状态: SHOW PROCEDURE STA ...
- 时间复杂度 - Convert 计算次数 TO 时间复杂度
我们假设计算机运行一行基础代码需要执行一次运算. int aFunc(void) { printf("Hello, World!\n"); // 需要执行 1 次 return 0 ...
- 分享一个现代的,免费的,简单而有效的编辑器Vis
Vis是一个免费的开源,类似Vi的代码编辑器,它扩展了vi的模态编辑,内置支持使用相同编辑器的基于结构正则表达式的命令语言实现的多个游标/选择.并将其与基于sam结构正则表达式的命令语言相结合. Vi ...
- springboot与任务(异步任务)
描述:在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的:但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在Spring 3.x ...
- call和apply的应用
相同点 都能够改变方法的执行上下文(执行环境),将一个对象的方法交给另一个对象来执行,并且是立即执行 var arrayLike = { 0: 'item1', 1: 'item2', 2: 'ite ...
- echarts的使用——vue
在vue的项目开发中,数据的可视化可以用echarts来实现,具体用法如下: (1)安装echarts,进入项目目录,执行如下命令,安装echarts: npm install echarts (2) ...
- 出错提示:“Could not flush the DNS Resolver Cache: 执行期间,函数出了问题”的解决方法
在DNS解析中,出错提示:"Could not flush the DNS Resolver Cache: 执行期间,函数出了问题"的解决方法 . 由于公司网站空间更换了服务商. ...
- 34 N皇后问题Ⅱ
原题网址:https://www.lintcode.com/zh-cn/old/problem/n-queens-ii/ 34. N皇后问题 II 描述 笔记 数据 评测 讨论区 根据n皇后问题, ...
- iOS开发本地推送(iOS10)UNUserNotificationCenter
1.简介 iOS10之后苹果对推送进行了封装,UNUserNotificationCenter就这样产生了.简单介绍本地推送的使用UserNotifications官方文档说明! 2.简单使用UNUs ...