angular js服务/工厂属性行为

时间:2013-10-12 17:06:50

标签: javascript angularjs service controller

我对AngularJS行为(一般的JS行为)有疑问

我将Angular工厂注入控制器。

这是控制器代码的片段

$scope.localObjCollection= myObjFactorySvc.getObjCollection();

我们假设myObjFactorySvc.getObjCollection()返回以下对象

[{"id":1"name":null,"address":null,"email":null},
{"id":2"name":null,"address":null,"email":null},
{"id":3"name":null,"address":null,"email":null},
{"id":4"name":null,"address":null,"email":null},
]

所以,我几乎使用工厂来获取集合并将其存储在$scope.localObjCollection中。 我的问题是$scope.localObjCollection是否具有getObjCollection()返回的数据的值(副本)或仅是参考。

因此,如果我在控制器源代码中某处,那么 $scope.localObjCollection.push(newObj),它是否也更新了Factory中的原始集合?我应该猜,但我想了解正确的行为

1 个答案:

答案 0 :(得分:2)

JavaScript中的数组是一个对象,JS中的对象总是通过引用传递/分配。因此,您的代码也会更新Factory中的原始集合,假设您的 myObjFactorySvc.getObjCollection()是这样的:

myObjFactorySvc.getObjCollection = function() { return someArrayVariable; }