/ / AngularJS ui.router root state should be called always during app init - angularjs, angular-ui-router

État angularJS ui.router root devrait être appelé toujours pendant l'application init - angularjs, angular-ui-router

Je travaille sur une application Web utilisant AngularJS et j'ai utilisé ui.router pour le routage.

J'ai configuré l'application

.state("init", {
url: "/",
controller: "LocalizationCtrl",
templateUrl: "partials/common/init.html"
})
.state("login", {
url: "/login",
templateUrl: "partials/auth/login.html",
controller: "LoginCtrl",
resolve: {
skipIfLoggedIn: skipIfLoggedIn
}
});

En init je charge le json de localisation depuis le serveur

Si je frappe l'URL suivante, tout fonctionne bien http://localhost/app/index.html

Cependant, si je frappe l'URL suivante ou tout autre état directement, les fichiers de localisation ne se chargent pas http://localhost/app/index.html#/login

Comment puis-je m'assurer que lorsque l'application est chargée en premier à l'aide d'une URL, le code de localisation doit s'exécuter et ne pas être contourné.

Réponses:

0 pour la réponse № 1
/ Bu default go to state -
angular.module("yourModuleName").run(["$location", function ($location) {
$location.url("/");
}]);

Ainsi, lorsque vous actualisez ou prenez votre application Web, votre site passe à l'URL /, il devrait donc invoquer votre état, init travailler.

Ou vous pouvez utiliser $state aller dans un état au démarrage

/ Bu default go to state -
angular.module("yourModuleName").run(["$state", function ($state) {
$state.go("init");
}]);

0 pour la réponse № 2

C'est très simple il y a une propriété "Résoudre"vous pouvez l'utiliser. Dans votre état parent, vous pouvez écrire ceci -

.state("parentState", {
resolve : {
localize : function() {
//Localization code here
}

}
};

Resolve garantira que votre travail de localisation sera effectué avant le chargement du contrôleur.