Я довольно новый для углового.угловой модуль доступа с завода
То, что я хочу, что когда фабричный метод вызывается снаружи, метод должен обновлять данные модули области видимости, как это:
fileList.controller('FileListController', ['$scope', function ($scope) {
$scope.device = {};
$scope.files = [];
$scope.isDeviceDefined = function() {
return typeof $scope.device === 'object' && $scope.device !== null && $scope.device.hasOwnProperty('label');
};
}]);
fileList.factory('deviceFiles', ['$scope', 'files', function ($scope, files) {
return {
setFilesForDevice: function (device) {
$scope.device = device;
$scope.files = files.getFilesFromDevice(device.label);
}
};
}]);
Но он говорит, что $ сфера является неизвестным поставщиком. Есть ли другой способ, чтобы данные модулей могли быть обновлены? setFilesForDevice
- это метод, который вызывается нажатием кнопки внутри другого шаблона контроллеров.
'$ scope' технически * местные * к контроллеру, т.е. нет Углового сервиса, обеспечивающего его; подсистема представления предоставляет ее каждому контроллеру, который он создает. Таким образом, нет, услуги ** не могут обладать областью применения **. И они не должны, концептуально неправильно иметь сервисный уровень в зависимости от вида. Что ты можешь сделать? (1), служба возвращает объект и связывает его с областью (2), передавая область действия методу службы в качестве аргумента [(3), возможно, другие]. Я бы пошел (1). –
Области создаются директивами/для. Контроллеры связаны с директивами, поэтому им может быть предоставлен доступ к их областям. Услуги не имеют отношения к директивам. Эрго у них нет дел с областями. – zeroflagL
Тогда как я могу обновить значения $ scope при вызове фабричного метода deviceFiles? –