【发布时间】:2017-01-17 06:12:24
【问题描述】:
我在 anuglar 服务中有 2 个对象,我想分配一个名为 nodes 的属性,该属性指向同一个数组。这是正确的方法吗?我没有看到当我对 1 个对象上的节点进行更改时,另一个对象正在更改
objectOne.nodes = [o1, o2, o3];
objectTwo.nodes = [];
angular.forEach(objectOne.nodes, function(n){
objectTwo.nodes.push(n); // based on some logic not all n assigned to the objectTwo, some might go to objectThree.
})
现在,如果我更改 objectTwo.nodes[i],我希望这适用于 objectOne.nodes[j],其中 i 和 j 是 2 个不同对象中同一节点的索引(因为排序可能不匹配),但我是没有看到这个。当我将节点推送到objectTwo 时,我做错了什么吗?
PS:我正在对 DOM 上的 objectTwo 节点进行更改,并且 objectOne 和 ObjectTwo 都在我的服务的 mem 变量中。
【问题讨论】:
-
你为什么不直接做 - objectTwo.nodes = objectOne.nodes,这样你就可以通过引用传递它
-
否,因为我想使用逻辑来选择哪些节点继续在 objectTwo、objectThree 或 objectFour 等...
-
对 1 个对象上的节点进行更改,另一个对象正在更改 - 我想您指的是
$scope.$watch?回调函数类似于angular.forEach -
我对在 DOM 上呈现的 objectTwo 进行了更改。我希望 objectOne 的内存值能够自动获取该值,因为 objectOne 和 objectTwo 都指向内存中的同一个节点,而无需自己使用 watch 和更新这些节点。
-
“节点”属性不是“相同”数组。要获得预期结果,请阅读 naortor 的评论。
标签: javascript angularjs arrays pass-by-reference