Mam wywołanie ajax wewnątrz pliku .run(), który ładuje zmienną do $ rootScope Ta zmienna jest wymagana w kontrolerze związanym z widokiem. Czasami podczas odświeżania (F5) przed załadowaniem .controller nie ma nic w $ rootScope.SuperCategories.AngularJS
sampleApp.factory('SuperCategoryService', ['$http', '$q', '$rootScope', function ($http, $q, $rootScope){
var SuperCategoryService = {};
SuperCategoryService.SuperCategories = $rootScope.SuperCategories;
alert ($rootScope.SuperCategories);
return SuperCategoryService;
}]);
sampleApp.run(function($rootScope, $q, $http) {
var req = {
method: 'POST',
url: 'SuperCategoryData.txt',
//url: 'http://localhost/cgi-bin/superCategory.pl',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }//,
//data: { action: 'GET' }
};
$rootScope.SuperCategories = [];
$rootScope.GetSuperCategories = function() {
var defer = $q.defer();
$http(screq).then(function(response) {
$rootScope.SuperCategories = response.data;
//alert ($rootScope.SuperCategories);
defer.resolve($rootScope.SuperCategories);
}, function(error) {
defer.reject("Some error");
});
return defer.promise;
}
$rootScope.GetSuperCategories();
});
Jak naprawić ten błąd.
Kiedy mówisz, że w usłudze nie ma nic, masz na myśli 'niezdefiniowany' lub' [] '? Jeśli później, to dlatego, że twoja obietnica nie została jeszcze rozwiązana. – floribon
Jego puste [] .. Czy możesz pomóc, jak rozwiązać obietnicę. –