Мой реальный код немного сложный, поэтому я написал здесь простой, чтобы просто объяснить мой вопрос.Принудительное выполнение для завершения выполнения перед присвоением результатов переменной
В каждом прогоне я хочу получить содержимое HTML-шаблона внутри службы, а затем назначить их переменной в контроллере (или в run
). После отслеживания кода я заметил, что сервис завершил выполнение после .run
.
angular.module("app",[])
run(function($rootScope, service){
var modules = {"a":{"name":"a"},"b":{"name":"b"}.....}
$rootScope.innerHTML = service.gethtml(modules);
})
.controller("main", function($scope,service){
})
.service("service", function($http){
this.gethtml = function(modules){
var obj = {};
angular.forEach(modules,function(module)){
var template = "path/to/html";
var innerHTML="";
$http.get(template)
.success(function(data){
module.innerHTML = data;
})
.error(function(data, status) {
});
//return innerHTML;
}
return modules;
}
})
Другими словами, я хочу, чтобы заставить service
закончить выполнение перед этим назначением $rootScope.innerHTML = service.gethtml;
в перспективе.
Можете ли вы предложить хорошие способы? Идея отверстия заключается в том, что у меня есть JSON-файл объектов, и в каждом прогоне я получаю эти объекты, а также добавляю новое свойство 'innerHtML', чтобы они ссылались на каждый контент шаблона html в моем проекте. Теперь контент может измениться на другой язык, поэтому мне нужен новый контент, поэтому я решил получить его в каждом прогоне. У вас есть хорошие способы, если я очистил свою идею? –
@HalaElBarchah Что значит «каждый пробег»? Какой маршрутизатор вы используете? – krutkowski86
Это ngRouter. Каждый пробег я имею в виду каждый маршрут –