Ich baue eine Ruhe-API mit forestbundle und ich verwalte das Frontend mit eckigen und Twig-Vorlage. Ein auf meiner URL-Adresse sieht wie folgt aus:
http://mywebsite/myroute/idContain
Wenn ich die URL in meinem Browser, in einer Zweig Vorlage (Art html) zu laden, rufe ich den Parameter "idContain" (von einem fosrestbundle Controller comming) mit ng-init von AngularJS wie folgt aus:
<div class="container-fluid" ng-init="getContainByID({{ idContain }})">
//...lot html div with angularjs directives
</div>
Und sofort, ng-init meiner AngularJS app gehen findet getContainByID (idContain), um sie auszuführen. Dieser sieht wie folgt aus:
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...
}
Tatsache ist, dass, myService.getContains(idContain)
aus meiner Ruhe Service kommen wie folgt aussehen:
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});
}
}
});
Das Problem ist jetzt, wenn ich meine AngularJS App laufen, Umfang $ .containRoot wartet nicht, bis myService.getContains (idContain) (von meinem asynchronen $ Ressourcen-Dienst kommend) geladen wurde und verursachte Fehler beim Absturz meines Webapps.
Wie kann ich $ scope.containRoot und den Rest meines eckigen Codes auf "Warten" setzen, bis myService.getContains(idContain)
(verbunden mit der API-Ressource) vollständig geladen ist, bevor Sie fortfahren?
Haben Sie diesen Fehler versuchen, was Sie getan haben: 'angular.js: 14328 Fehler: [$ Injektor: Unpr] Unbekannt provider: $ promiseProvider <- $ promise <- myCtrl http://errors.angularjs.org/1.6.1/$injektor/u npr? p0 =% 24promiseProvider% 20% 3C-% 20% 24promoise% 20% 3C-% 20myCtrl bei angular.js: 68' – kabrice
sollte nicht bekommen, es sei denn, Sie injizieren '$ versprechen' in Controller, die Sie nicht ' t tun – charlietfl
Ja, ich tat! Ich habe es gerade entfernt, und ich habe einen weiteren Fehler: 'angular.js: 14328 TypeError: Kann die Eigenschaft 'then' von undefined bei ChildScope. $ Scope nicht lesen. getContainByID (http: // localhost: 8000/js/eckige-app/app.js: 75: 45) ... ' – kabrice