Maison > Questions et réponses > le corps du texte
Par exemple :
Il y a trois contrôleurs dans l'application, ils sont dans une relation horizontale
Le contrôleur A contrôle la partie d'en-tête de la page
Les contrôleurs B et C contrôlent la page de détails, la page d'édition, routage La relation est la suivante
when('/detail/:id', { templateUrl: 'tpls/detail.html', controller: "BController" }).
when('/edit/:id', { templateUrl: 'tpls/edit.html', controller: "CController" }).
L'exigence actuelle est d'obtenir l'identifiant du paramètre dans l'URL de routage du contrôleur A. Comment l'obtenir ?
Mon implémentation actuelle :
J'ai écrit un service et écrit une fonction dans le service. La fonction de cette fonction est d'utiliser $location.path() pour obtenir l'URL actuelle, puis d'utiliser la chaîne La méthode d'interception. est utilisé pour obtenir l'identifiant dans le paramètre Bien que la valeur soit obtenue, il semble qu'il ne devrait pas en être ainsi
Ma tentative :
$location a une API, $location.search().name est utilisé pour obtenir les paramètres d'URL actuels, mais cette API ne peut pas obtenir mes paramètres car mon URL a la forme d'index.html# Dans le forme de /detail/1, il ne peut être obtenu sans nom
Une autre idée est d'ajouter un contrôleur de niveau supérieur aux trois contrôleurs et de le transférer via le contrôleur parent, mais cela semble inapproprié
给我你的怀抱2017-05-15 17:03:23
http://stackoverflow.com/questions/25370775/exposing-the-current-state-name-with-ui-router
//this watches for state changes
$rootScope.$on('$stateChangeStart',
function(event, toState, toParams, fromState, fromParams){
//do something when state changes
$yourService.state = toState.name;
$yourService.postid = toParams.postid;
console.log(toParams); //this is the stateParams you need
});
给我你的怀抱2017-05-15 17:03:23
Injectez ce service dans $routeParams, puis
$scope.id = $routeParams.id