Angular JS $locationChangeStart obtenir l'url suivant l'itinéraire de l'objet
Je suis en train de mettre en œuvre l'Autorisation sur mon angulaire de l'application, lorsqu'un itinéraire a changé, je veux vérifier si la route est autorisé pour l'utilisateur ou non. J'ai essayé avec $routeChangeStart
mais il n'empêche que l'événement.
Mon code actuel:
$scope.$on('$routeChangeStart', function(event, next, current) {
if(current_user.is_logged_in){
var route_object = next.route_object;
if(!(route_object.route_roles)){
event.preventDefault();
}
}
});
Ici dans mon next
objet, je suis route_object qui est défini dans mon $routeProvider
var routes = object;
app.config(function($routeProvider) {
$routeProvider.when(url, {
templateUrl: "/users.html",
route_object: routes,
});
});
routes
est un objet qui est formé dans ma fonction, mais lorsque j'utilise $locationChangeStart
je suis juste en train de url de la suivante et page précédente,
Comment puis-je obtenir la totalité du parcours de l'objet??
Vous devez vous connecter pour publier un commentaire.
Vous pouvez obtenir le paramètre de route dans un
$locationChangeStart
écouteur d'événement comme ceci:Alors classique de la méthode preventDefault pourraient faire le travail. Voici un plunker que j'ai écrit quelque chose de similaire.
$location.$$path
retourne/users
mais à l'intérieur de mon parcours, j'ai l'URL/users/:id?
, à Cause de qui je reçois un message d'erreur.Ce qui est contenu dans la prochaine.$$itinéraire?
Il devrait y avoir une prochaine.$$l'itinéraire.route_object
$locationChangeStart
next
est juste une chaîne de caractères.$scope.$on('$routeChangeStart', function(event, next, current) { console.log(JSON.stringify(next.$$route, null, 4)); if(current_user.is_logged_in){ var route_object = next.$$route.route_object; if(!(route_object.route_roles)){ event.preventDefault(); } } });
$routeChangeStart
Vous pouvez aussi utiliser $fournisseur d'emplacement pour ce faire, comme :