Sto lavorando all'applicazione web usando AngularJS e ho usato ui.router per il routing.
Ho configurato l'app
.state("init", {
url: "/",
controller: "LocalizationCtrl",
templateUrl: "partials/common/init.html"
})
.state("login", {
url: "/login",
templateUrl: "partials/auth/login.html",
controller: "LoginCtrl",
resolve: {
skipIfLoggedIn: skipIfLoggedIn
}
});
In init carico la localizzazione json dal server
Se premo il seguente URL, tutto funziona correttamente http://localhost/app/index.html
Tuttavia, se raggiungo direttamente il seguente URL o qualsiasi altro stato, i file di localizzazione non vengono caricati http://localhost/app/index.html#/login
Come posso assicurarmi che quando l'app viene caricata per prima cosa utilizza un URL, il codice di localizzazione deve essere eseguito e non aggirato.
risposte:
0 per risposta № 1/ Bu default go to state -
angular.module("yourModuleName").run(["$location", function ($location) {
$location.url("/");
}]);
Quindi, quando aggiorni o prendi la tua applicazione web, il tuo sito andrà in url /
, quindi dovrebbe invocare il tuo stato, init
lavorare.
O puoi usare $state
andare in uno stato all'inizio
/ Bu default go to state -
angular.module("yourModuleName").run(["$state", function ($state) {
$state.go("init");
}]);
0 per risposta № 2
È molto semplice che ci sia una proprietà "Risolvere"puoi usarlo. Nel tuo stato genitore puoi scrivere questo -
.state("parentState", {
resolve : {
localize : function() {
//Localization code here
}
}
};
Resolve farà in modo che il lavoro di localizzazione venga eseguito prima che il controller sia caricato.