javascript – AngularJS:数组之间的数据绑定

前端之家收集整理的这篇文章主要介绍了javascript – AngularJS:数组之间的数据绑定前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
给定一个数组sourceArray我想创建一个取决于第一个的条目的targetArray.这意味着创建的Array应包含每个源条目的条目,并且只要sourceArray发生更改,就会更新.但是,修改targetArray不应该更新源.

这个Plunker的作品只要sourceArray是静态的.一旦你开始修改代码,它显然不会正确更新目标,因为我缺乏一个适当的数据绑定机制.

是否需要通过观察sourceArray手动更新targetArray,或者是否有任何一种由Angular实现的单向数据绑定机制,我可以使用它来保持两个数组同步?

解决方法

正如普林斯说.你应该使用$watch.但是必须将Collection绑定到它,以使其工作.并且在表内部合并数组.

查找此工作示例:

$scope.$watchCollection(angular.bind(this,function () {
    return this.sourceArray;}),function (newVal,oldVal) {

      var arr = [];
      for(var i in vm.sourceArray){
         var shared = false;
         for (var j in vm.targetArray)
             if (vm.targetArray[j].id == vm.sourceArray[i].id) {
                 shared = true;
                 break; 
             }
         if(!shared) arr.push(vm.sourceArray[i])
      }
      console.log(arr);
      vm.targetArray = vm.targetArray.concat(arr);
    },true);

http://plnkr.co/edit/E2inRLtwfWnb1VBymNNl?p=preview

猜你在找的JavaScript相关文章