У меня есть вопрос о поведении AngularJS (поведение JS в целом)угловая JS Услуги/Фабрика атрибутов поведение
У меня есть Угловое завод, впрыскиваемого в контроллер.
Вот фрагмент кода контроллера
$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)
, он также обновляет оригинальную коллекцию на фабрике? Я должен угадать, но я хотел бы понять правильное поведение.
AFAIK, если он является объектом, она должна быть ссылка, но если это значение, это копия. Таким образом, он должен обновить исходную коллекцию. Вы можете использовать 'angular.copy' для создания клона коллекции. – jpmorin
Вот небольшая демонстрация, показывающая вам отличия: http://plnkr.co/edit/ZUA3zFcMCHj5SNDDZlwT?p=preview – jpmorin
Поскольку фабрики являются одноточечными, вы можете делиться своими данными легко через свое приложение. – jpmorin