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.