Il servizio funzionerà, ma un modo logico per farlo utilizzando solo ambiti e controller ordinari è impostare i controller e gli elementi in modo che riflettano la struttura del modello. In particolare, è necessario un elemento padre e un controller che stabiliscano un ambito padre. Le singole pagine del modulo dovrebbero risiedere in una vista che è un figlio per il genitore. L'ambito padre persiste anche se la visualizzazione figlio viene aggiornata.
Presumo che tu stia utilizzando ui-router in modo da poter avere viste con nome annidate. Quindi in pseudo-codice:
<div ng-controller="WizardController">
<div name="stepView" ui-view/>
</div>
Quindi WizardController definisce le variabili di ambito che si desidera preservare nei passaggi del modulo multipagina (a cui mi riferisco come "procedura guidata"). Quindi i tuoi percorsi verranno aggiornati stepView
solo. Ogni passaggio può avere i propri modelli, controller e ambiti, ma i loro ambiti vengono persi da una pagina all'altra. Ma gli ambiti in WizardController vengono mantenuti in tutte le pagine.
Per aggiornare gli ambiti di WizardController dai controller figlio, è necessario utilizzare la sintassi $scope.$parent.myProp = 'value'
o definire una funzione setMyProp
su WizardController per ogni variabile di ambito. Altrimenti, se provi a impostare le variabili di ambito padre direttamente dai controller figlio, finirai per creare una nuova variabile di ambito sul figlio stesso, oscurando la variabile padre.
È un po 'difficile da spiegare e mi scuso per la mancanza di un esempio completo. Fondamentalmente si desidera un controller padre che stabilisca un ambito padre, che verrà preservato in tutte le pagine del modulo.