Est-il possible de passer des variables à un contrôleur à partir de l'interface utilisateur.routeur?
J'ai une page structurée avec quelques vues imbriquées, à l'aide de ui.router
et je tiens à transmettre certaines données à partir du contrôleur de parent à l'enfant contrôleur, sans injection de services inutiles dans le contrôleur enfant.
Dans mon esprit, quelque chose comme ces derniers, ce serait parfait
state('home', {
url: "/home",
templateUrl: "parts/home.html",
controller: "FatherController"
}).
state('home.child', {
url: "/child",
templateUrl: "parts/home/child.html",
controller: "ChildController",
params: {$scope.data = $rootScope.someData}
})
Savez-vous si il existe un moyen de faire cela?
OriginalL'auteur domokun | 2013-11-08
Vous devez vous connecter pour publier un commentaire.
Si votre enfant de voir est imbriquée dans la vue parent, votre enfant contrôleur hérite automatiquement de la portée parent.
Vous devriez être en mesure d'accéder à la mère du contrôleur de données directement à partir du contrôleur enfant.
votre contrôleur devrait être l'héritage du contrôleur de parent. Essayez de vous connecter à
$scope.$parent
à partir de votre contrôleur enfant.Ouais, il est là! Je vais utiliser le
$scope.$parent
alors, je vous remercie!C'est aussi une utilisation typique des événements. Dans le contrôleur de parent
$scope.$broadcast('onSomeEventName', myReallyLargeObject);
et de l'enfant contrôleur de jeu$scope.$on('onSomeEventName', function(myReallyLargeObject) { //... });
OriginalL'auteur Joseph Silber
Bien, je suppose que vous n'avez pas toujours avez le choix de déplacer les données vers un contrôleur de parent ou d'un tel.
Ma recommandation serait d'utiliser des résolveurs (https://github.com/angular-ui/ui-router/wiki#resolve) faire de la magie.
Voici un exemple sur la façon dont il peut être fait pour travailler:
Et vous comme par magie obtenir le $scope.obj données lorsque le contrôleur est instanciée, quelle que soit la façon.
OriginalL'auteur vperron
Vous pouvez utiliser les Paramètres de la Requête et de l'accès à l'aide de $stateParams
https://github.com/angular-ui/ui-router/wiki/URL-Routing
OriginalL'auteur Prasad
Bien, dans mes projets, j'utilise
resolve
deAngular UI router
.En gros, lors de l'initialisation de l'état parent, de récupérer des données à partir du serveur, et le stocker dans
listItem
. Vous pouvez également séparer la logique de faire une requête au serveur à l'aide d'unservice
et à l'injecter dans config.Supposons que je clique quelque part dans le parent de l'état pour ouvrir le nouvel état d'enfant avec un
Id
comme une chaîne de requête. Puis, nous avons ceid
par$stateParams
et le filtre à trouver le bon élément danslistItem
(à l'aide de Trait de soulignement)route.js
Ensuite, vous pouvez accéder à
listItem
etitem
dans le contrôleur comme ci-dessous.parent.controller.js
child.controller.js
OriginalL'auteur trungk18