Utilisation de $ scope dans la résolution d'ui-router
Je suis à l'aide de l'interface utilisateur du routeur résoudre afin d'obtenir des données à partir d'un service.
Le truc c'est que j'ai besoin d'obtenir une valeur du parent $champ d'application afin d'appeler le service, comme illustré ci-dessous.
resolve: {
contactService: 'contactService',
contacts: function ($scope, contactService) {
return contactService.getContacts($scope.parentCtrl.parentObjectId);
}
}
Je reçois Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
Également essayé quelques tentatives désespérées comme l'ajout de la portée de la détermination de l'objet comme présentées ci-dessous avec la réussite.
scope: $scope
Des idées?
source d'informationauteur Loukas Avramidis
Vous devez vous connecter pour publier un commentaire.
C'est impossible, la portée n'a pas été initialisé à ce point, de sorte que vous ne pouvez pas l'utiliser dans la détermination de l'objet. Vous pouvez accéder à la portée dans le contrôleur, après avoir été initialisé. Le point de l'ensemble de la résoudre, c'est qu'il s'exécute avant de l'initialisation du contrôleur de sorte que vous pouvez injecter et accéder directement aux éléments résolus à votre portée.
Si vous avez besoin de passer une variable à l'état suivant, vous pouvez le faire en utilisant le
$stateParams
objet qui est disponible pour une utilisation dans les résoudre. Vous pouvez ajouter des données lors de la modification des états, par exemple:Dans votre modèle, si vous avez un objectId dans votre périmètre:
Ou dans votre contrôleur:
Vous pouvez ensuite récupérer votre résolution à l'aide de la
$stateParams
:Comme une alternative à la solution retenue, ce qui nécessite un autre aller-retour vers le serveur pour la même ressource (si vous êtes l'obtention de la valeur à partir du serveur/de l'api), vous pourriez
$watch
le parent de l'enfant contrôleur.