Пишу приложение на AngularJS. Есть у меня контроллер (в упрощённом виде)
app.controller("orgsItemCtrl", function($scope, orgsItemService) {
$scope.data = orgsItemService.data;
$scope.fn = orgsItemService.fn;
}
и фабрика к нему (также приведена в упрощённом виде)
app.factory('orgsItemService', function($http) {
var serviceObj = {
data : {},
fn : {
init : function() {
// Тут получаем данные с сервера через $http и сохраняем их в serviceObj.data
}
}
};
serviceObj.fn.init();
return serviceObj;
}
Во view устанавливаю связь с полями объекта
data из
orgsItemCtrl.
В итоге оно не работает как задумывалось, т.к.
data в
orgsItemCtrl остаётся пустым объектом, даже после получения данных с сервера.
Если же перенести функционал из фабрики в контроллер, то всё работает. Пример работающего кода:
app.controller("orgsItemCtrl", function($scope, orgsItemService) {
$scope.data = {};
$scope.fn = {
init : function() {
// Тут получаем данные с сервера через $http и сохраняем их в serviceObj.data
}
}
}
Так почему же не происходит связывание по ссылке в этом месте:
$scope.data = orgsItemService.data;