У меня есть некоторые параметры в $rootScope
, как указано ниже:
myApp.factory('itemService', function($http) {
return $http.get('/items');
});
myApp.run(function($rootScope, itemService) {
itemService.success(function(response) {
$rootScope.items = response;
});
});
myApp.controller('displayCtrl', function($rootScope, $scope) {
$scope.items = $rootScope.items;
});
Когда я запускаю приведенный выше код, я получаю эту ошибку от поджигатель TypeError: $rootScope.items is undefined
. Я действительно не знаю, что происходит.
Вот небольшое дополнение. items
представляет собой массив со списком объектов, как это:
items = [
{'name': 'spoon', 'price': 200},
{'name': 'table', 'price': 400},
{'name': 'shoe', 'price': 250}
];
Я хотел бы сделать items
доступны постоянно в моем приложении таким образом, что я могу отобразить каждый элемент в списке элементов (пункты), не делая еще один запрос к серверу , Я намереваюсь достичь этого, просто отображая элемент, используя $scope.item = items[$routeParams.id]
каждый раз, когда мне нужно отображать элемент. Я с нетерпением жду этого, используя либо функцию, присоединенную к ng-click
, либо обычный #/route/:param
. Благодаря
Я предполагаю, что itemService - это служба, которая содержит HTTP-вызовы для ресурсов и возвращает обещанный объект при вызове метода службы, поэтому где вызов? Не должно быть itemService.get(). Succes() и так далее. Кроме того, почему вы помещаете данные на rootScope? Таким образом, вы загрязняете rootScope. Вы можете полностью ввести itemService в displayController? – skubski
Завод содержит '$ http.get()' while run() содержит '.success'. Также я помещаю данные в $ rootScope, потому что хочу, чтобы он был доступен, как только загрузится файл/приложение. –
Плохо, я не видел заводского кода. (Я не думаю, что он был доступен, когда я прокомментировал). В этом случае вы запрашиваете ссылку на неопределенный (еще не установленный) объект, потому что http get все еще выполняется. В любом случае вы должны обновить свою фабрику и получить эти данные у rootScope, это плохая практика, и есть много документации, почему это так. – skubski