Я создаю rest api с fosrestbundle, и я управляю интерфейсом с угловым шаблоном Twig. Один на моем адресном выглядит следующим образом:
http://mywebsite/myroute/idContain
Когда я загружаю URL в браузере, в шаблоне прута (рода HTML), я получить параметр «idContain» (, поступающий от fosrestbundle контроллера) с нг-INIT из angularjs так:
<div class="container-fluid" ng-init="getContainByID({{ idContain }})">
//...lot html div with angularjs directives
</div>
И немедленно, нг-INIT будет идти к моему angularJS приложение находит getContainByID (idContain), чтобы запустить его. Это один выглядит следующим образом:
angular.module("myApp", ["ngSanitize", 'angular.filter', 'ui.tinymce', ...])
.config(function($interpolateProvider, ...) {
$interpolateProvider.startSymbol('{[{').endSymbol('}]}');
})
.controller("myCtrl",function ($filter,..., myService)
{
// lot of code...
$scope.getContainByID = function(idContain)
{
$scope.currentContain = myService.getContains(idContain);
$scope.containRoot = $scope.currentContain.contain.containRoot;
...
}
// lot of code...
}
Дело в том, что, myService.getContains(idContain)
приходят из службы отдыха, глядя, как это:
angular.module("MyServiceRest", ['ngResource'])
.factory("myService", function ($rootScope, $resource) {
var apiData = $resource(
"/api", {},
{
...
"getContains": {method: 'GET', isArray: false, url: "mywebsite/api/myroute/:containid"}
...
});
return {
getContains: function (idContain) {
return apiData.getContains({containid: idContain});
}
}
});
Теперь проблема, когда я запускаю мой angularjs App, $ сфера .containRoot не дожидается до тех пор, пока myService.getContains (idContain) (исходящий из моей службы asynchroeous $ resource) не закончит загрузку и не приведет к ошибкам, приводящим к сбою в работе webapp.
Как это сделать, чтобы заставить $ scope.containRoot и остальную часть моего углового кода ждать до тех пор, пока myService.getContains(idContain)
(связанный с ресурсом api) полностью не завершит загрузку до продолжения?
Получил эту ошибку, пытаясь сделать то, что вы сделали: 'angular.js: 14328 Ошибка: [$ injector: unpr] Неизвестно поставщик: $ promProvider <- $ prom <- myCtrl http://errors.angularjs.org/1.6.1/$injector/u npr? p0 =% 24promiseProvider% 20% 3C-% 20% 24промисс% 20% 3C-% 20myCtrl at angular.js: – kabrice
не должен этого понимать, если вы не вводили '$ prom' в контроллер, t do – charlietfl
Да, я сделал! Я просто удалил его, и у меня возникла еще одна ошибка: 'angular.js: 14328 TypeError: Невозможно прочитать свойство 'then' undefined на ChildScope. $ Scope. getContainByID (http: // localhost: 8000/js/angular-app/app.js: 75: 45) ... ' – kabrice