/ / AngularJS lo stato root di ui.router deve essere chiamato sempre durante l'app init - angularjs, angular-ui-router

Lo stato root di ui.router di AngularJS deve essere chiamato sempre durante l'app init - angularjs, angular-ui-router

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.