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

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

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

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

解决方法

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

查找此工作示例:

  1. $scope.$watchCollection(angular.bind(this,function () {
  2. return this.sourceArray;}),function (newVal,oldVal) {
  3.  
  4. var arr = [];
  5. for(var i in vm.sourceArray){
  6. var shared = false;
  7. for (var j in vm.targetArray)
  8. if (vm.targetArray[j].id == vm.sourceArray[i].id) {
  9. shared = true;
  10. break;
  11. }
  12. if(!shared) arr.push(vm.sourceArray[i])
  13. }
  14. console.log(arr);
  15. vm.targetArray = vm.targetArray.concat(arr);
  16. },true);

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

猜你在找的JavaScript相关文章