双向绑定angularjs服务bug

时间:2015-12-04 09:46:26

标签: javascript angularjs

采取以下小提琴:

fiddle

现在在此代码中,您将看到以下行:

 newList.forEach(function(y){
      activeUsers.push(y);
    });

这完全没问题。但是将代码更改为:

activeUsers = newList;

代码不再有效。

任何人都可以告诉我为什么会发生这种情况以及我如何修复它以便双向绑定有效吗?

2 个答案:

答案 0 :(得分:2)

这不起作用,因为您更改了引用。您的旧$scope.activeUsers仍然指向相同的旧空数组。

更改参考后,您必须从工厂获取新参考。这就是更改引用会导致问题的原因。

如果您从工厂获取引用,就像您一样,如果您希望所有绑定按预期工作,则必须继续处理同一个数组。

答案 1 :(得分:1)

$scope.activeUsers = testFactory.getActiveUsers();

您将数组ref分配给$ scope.activeUsers。因此,如果你将一些元素推送到activeUsers,$ scope.activeUsers也会改变。

activeUsers = newList;

然后,如果你这样做,activeUsers指向另一个数组ref,所以此时$ scope.activeUsers与activeUsers不同。