Ich habe diese Konstruktorfunktion:Weg zu abstrahieren einem Winkel ui Router Zustand mit Entschlossenheit in eine Konstruktorfunktion
function State(url, templateUrl, controller, controllerAs, factory, resolveProp){
this.url = url
this.templateUrl = templateUrl
this.controller = controller
this.controllerAs = controllerAs
}
und in meinem Router Rückruf Ich habe dies:
$stateProvider
.state('archetypes', new State('/admin/archetypes', './resources/features/admin/archetypes/index.html', 'archetypes', 'aaVM'))
Dies funktioniert gut. Ich habe jedoch eine andere Route, die eine Lösung enthält, einige Back-End-Daten zu erhalten.
Ich dachte, ich könnte in der Lage sein, so etwas für mein Konstruktor zu tun:
function State(url, templateUrl, controller, controllerAs, factory, resolveProp){
this.url = url
this.templateUrl = templateUrl
this.controller = controller
this.controllerAs = controllerAs
if(factory){
this.resolve = {}
this.resolve[resolveProp] = function(factory){
return factory.getAll()
}
}
}
und dann einen Zustand auf diese Weise instanziiert:
.state(
'archetypes',
new State(
'/admin/archetypes',
'./resources/features/admin/archetypes/index.html',
'archetypes',
'aaVM',
ArchetypesFactory,
'archetypes'
)
)
Aber ich denke, die .state
Methode ruft die Controller, um das aufgelöste Objekt zu verarbeiten, so dass, wenn ich die obige Statusinstanziierung versuche, es ausfällt, weil ArchetypesFactory
eindeutig undefiniert ist.
Beachten Sie, dass, wenn ich meinen Zustand auf diese Weise schreiben:
.state('archetypes', {
url: '/admin/archetypes',
templateUrl: './resources/features/admin/archetypes/index.html',
controller: 'archetypes',
controllerAs: 'aaVM',
resolve: {
archetypes: function(ArchetypesFactory){
return archetypesFactory.getAll()
}
}
})
Es funktioniert gut.
Gibt es eine Möglichkeit, das Zustandskonfigurationsobjekt mit einer Auflösung in eine Konstruktorfunktion oder ES6-Klasse zu abstrahieren?
Super, das funktioniert perfekt. –