Ich baue eine eckige App mit angular-UI-Router. Das Backend hat eine REST-API, die mir die URL zu einem Formular gibt, das auf einer Ticket-ID basiert. In app.js möchte ich die Vorlage basierend auf einer Abfrage für diesen REST-Service dynamisch festlegen. Beispiel:Angular-UI-Router - Inhalt der dynamischen Vorlage erhalten
$stateProvider
.state('form', {
url: '/form/:id',
templateProvider: function ($resource, formResolver, $stateParams) {
//formResolver calls the REST API with the form id and gets back a URL.
return formResolver.resolve($stateParams.id).then(function(url) {
return $resource(url).get();
};
},
controller: 'MyCtrl'
});
Das Problem ist, dass ich ein Versprechen der Rückkehr am Ende und templateProvider erfordern eine Reihe von Inhalten. Was würde Ich mag zu tun, einfach die URL zurück:
$stateProvider
.state('form', {
url: '/form/:id',
//I would like to inject formResolver, but I can't
templateUrl: function (stateParams, formResolver) {
return formResolver.resolve(stateParams.id);
},
controller: 'MyCtrl'
});
Aber ich weiß nicht Dependency Injection erhalten, wenn templateUrl statt templateProvider nach https://github.com/angular-ui/ui-router/wiki#wiki-templates verwenden, und ich habe immer noch das Problem der es ein Versprechen zurück. Ich denke, vielleicht ist meine einzige Lösung, das Versprechen api nicht zu verwenden.
Sie können auch 'return $ templateFactory.fromUrl (url)' –
+1 verwenden - Genau das, was ich brauchte, um mich in die richtige Richtung zu weisen. Ich konnte meinen Dienst nicht zur Arbeit bekommen (undefined), egal wie ich ihn für jetzt einfügte. Ich benutze ein $ http.get(). Ich musste auch das $ templateFactory Snippet von Josh verwenden, um ein Ergebnis zu erhalten. – spryce
Das hat gut funktioniert –