Sto utilizzando ui-router
v0.2.13. This page afferma che:Perché le funzioni di risoluzione dello stato figlio vengono eseguite prima che vengano risolte le promesse dello stato genitore
Tutto si risolve in uno Stato sarà risolto prima di passare al stato successivo, anche se non vengono iniettate in quel bambino
E più
Tutte le risoluzioni per tutti gli stati immessi vengono attivate e risolve prima che la transizione inserisca qualsiasi stato (indipendentemente da la risoluzione venga iniettata da qualche parte)
Tuttavia, nel mio caso, la funzione di risoluzione stato figlio viene eseguita prima che venga risolta la promessa di risoluzione del genitore. Com'è possibile?
Qui:
$stateProvider
.state('route1', {
url: "/route1",
templateUrl: "route1.html",
resolve: {
parent: ["$timeout", "$q", function ($timeout, $q) {
var d = $q.defer();
$timeout(function() {
d.resolve();
}, 5000);
return d.promise;
}]
}
})
.state('route1.list', {
url: "/list",
templateUrl: "route1.list.html",
controller: function ($scope) {
$scope.items = ["A", "List", "Of", "Items"];
},
resolve: {
child: function() {
alert("I'm shown before `parent` resolved");
}
}
});
Se navigare a /route1/list
l'avviso viene immediatamente visualizzata invece di aspettare 5 secondi fino a una promessa genitore determinazione è stato risolto.
Questa domanda potrebbe essere più semplice da rispondere se mostri del codice che riproduce il comportamento che stai descrivendo. – gilly3
La funzionalità è abbastanza grande per aggiungerla a plunker o qualcosa del genere, volevo solo confermare che la mia comprensione delle virgolette sia corretta, vero? –
Risoluzione dei genitori eseguita prima, potresti voler mostrare del codice :). La seconda citazione indica solo che lo stato del router verrà modificato dopo la risoluzione del problema. – Eloims