Le service fonctionnera, mais d'une façon logique de le faire en utilisant uniquement les champs d'application et des contrôleurs est de mettre en place vos contrôleurs et les éléments de sorte qu'il reflète la structure de votre modèle. En particulier, vous avez besoin d'un élément parent et contrôleur établir un parent. Les différentes pages de ce formulaire doit résider dans une vue qui est un enfant de la mère. La portée parent persiste même que la vue enfant est mis à jour.
Je suppose que vous êtes à l'aide de l'interface utilisateur du routeur de sorte que vous pouvez avoir imbriqués nommé vues. Puis, en pseudo-code:
<div ng-controller="WizardController">
<div name="stepView" ui-view/>
</div>
Puis WizardController définit la portée des variables que vous souhaitez conserver à travers les étapes de la multi-formulaire de la page (dont je fais référence à un "assistant"). Ensuite, votre parcours sera mise à jour, stepView
seulement. Chaque étape peut avoir ses propres modèles, des contrôleurs et des champs, mais leurs champs d'application sont perdus à partir de la page à page. Mais les étendues dans WizardController sont conservés à travers toutes les pages.
Pour mettre à jour le WizardController étendues à partir de l'enfant contrôleurs, vous aurez besoin d'utiliser une syntaxe comme celle - $scope.$parent.myProp = 'value'
ou de définir une fonction setMyProp
sur WizardController pour chaque portée variable. Sinon, si vous essayez de définir la portée parent variables directement auprès de l'enfant contrôleurs, vous finirez juste de créer un nouveau champ d'application variable sur l'enfant lui-même, de l'ombre à la variable parent.
Un peu difficile à expliquer et je m'excuse pour le manque d'un exemple complet. Fondamentalement, vous voulez un contrôleur de parent qui établit un parent, qui seront préservées à travers toutes les pages de votre formulaire.