Layanan akan berfungsi, tetapi cara logis untuk melakukannya hanya dengan menggunakan cakupan dan pengontrol biasa adalah dengan menyiapkan pengontrol dan elemen Anda sehingga mencerminkan struktur model Anda. Secara khusus, Anda memerlukan elemen induk dan pengontrol yang menetapkan lingkup induk. Halaman individu dari formulir harus berada dalam tampilan yang merupakan turunan dari induknya. Cakupan induk tetap ada bahkan saat tampilan anak diperbarui.
Saya berasumsi Anda menggunakan ui-router sehingga Anda dapat memiliki tampilan bernama bersarang. Kemudian di pseudo-code:
<div ng-controller="WizardController">
<div name="stepView" ui-view/>
</div>
Kemudian WizardController menentukan variabel cakupan yang ingin Anda pertahankan di seluruh langkah formulir multi-halaman (yang saya sebut sebagai "wizard"). Kemudian rute Anda stepView
hanya akan diperbarui . Setiap langkah dapat memiliki template, pengontrol, dan cakupannya sendiri, tetapi cakupannya hilang dari halaman ke halaman. Tapi cakupan di WizardController dipertahankan di semua halaman.
Untuk mengupdate cakupan WizardController dari pengontrol anak, Anda harus menggunakan sintaks seperti $scope.$parent.myProp = 'value'
atau menentukan fungsi setMyProp
di WizardController untuk setiap variabel cakupan. Jika tidak, jika Anda mencoba menyetel variabel lingkup induk langsung dari pengontrol anak, Anda akan berakhir hanya membuat variabel lingkup baru pada anak itu sendiri, membayangi variabel induk.
Agak sulit untuk dijelaskan dan saya mohon maaf atas kurangnya contoh lengkap. Pada dasarnya Anda menginginkan pengontrol induk yang menetapkan lingkup induk, yang akan dipertahankan di semua halaman formulir Anda.