首页 > 代码库 > avalon数组特性(二)

avalon数组特性(二)

  上一篇,讲了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的数组元素进行监听的,但是好困,明天再说^_^

avalon数组特性(二)