上一篇,讲了avalon数组的元素添加方法,这一篇讲avalon的数组监听。
avalon有一个监听变化的方法,即$watch。这个方法可以监听avalon属性发生的变化,监听到变化后会触发定义的方法。avalon数组被监听时有一个问题:只能监听数组长度的变化,数组元素的修改无法被监听。如下例:
var vm = avalon.define({ $id:‘test‘, arr:[]});setTimeout(function(){ vm.arr = [1,2,3,4,5];},1000);setTimeout(function(){ avalon.Array.ensure(vm.arr,6)},2000);setTimeout(function(){ avalon.Array.remove(vm.arr,6)},3000);vm.$watch(‘arr‘,function(){ console.log(‘数组改动了‘)})
控制台会输出三次:数组改动了,说明数组的创建,元素的添加和删除都会被监听,下面再看看另外一种情况:
var vm = avalon.define({ $id:‘test‘, arr:[]});setTimeout(function(){ vm.arr = [1,2,3,4,5];},1000);setTimeout(function(){ vm.arr[0]=0;},2000);vm.$watch(‘arr‘,function(){ console.log(‘数组改动了‘)})
arr成功修改下标为0的元素,然而控制台只输出一次:数组改动了,说明avalon的$watch只能监听数组长度变化,无法监听数组个别元素被修改的情况。
后来通过进一步的学习发现还是有办法对avalon的数组元素进行监听的,但是好困,明天再说^_^
时间: 2024-07-30 23:53:14