Hizmet çalışacaktır, ancak bunu yalnızca sıradan kapsamları ve denetleyicileri kullanarak yapmanın mantıklı bir yolu, denetleyicilerinizi ve öğelerinizi modelinizin yapısını yansıtacak şekilde ayarlamaktır. Özellikle, bir üst kapsam oluşturan bir ana öğeye ve denetleyiciye ihtiyacınız vardır. Formun ayrı ayrı sayfaları, ebeveynin alt öğesi olan bir görünümde yer almalıdır. Üst kapsam, alt öğe görünümü güncellendiğinde bile devam eder.
Ui-yönlendirici kullandığınızı varsayıyorum, böylece yuvalanmış adlandırılmış görünümlere sahip olabilirsiniz. Sonra sözde kodda:
<div ng-controller="WizardController">
<div name="stepView" ui-view/>
</div>
Daha sonra WizardController, çok sayfalı formun ("sihirbaz" olarak bahsettiğim) adımlarında korumak istediğiniz kapsam değişkenlerini tanımlar. Ardından rotalarınız stepView
yalnızca güncellenecektir . Her adımın kendi şablonları, denetleyicileri ve kapsamları olabilir, ancak bunların kapsamları sayfadan sayfaya kaybolur. Ancak WizardController'daki kapsamlar tüm sayfalarda korunur.
WizardController kapsamlarını alt denetleyicilerden güncellemek için, her kapsam değişkeni için WizardController'da $scope.$parent.myProp = 'value'
bir işlev gibi sözdizimi kullanmanız veya tanımlamanız gerekir setMyProp
. Aksi takdirde, ana kapsam değişkenlerini doğrudan alt denetleyicilerden ayarlamaya çalışırsanız, yalnızca alt öğe üzerinde yeni bir kapsam değişkeni oluşturarak ana değişkeni gölgelendirirsiniz.
Açıklaması zor ve tam bir örnek olmadığı için özür dilerim. Temel olarak, formunuzun tüm sayfalarında korunacak bir üst kapsam oluşturan bir üst denetleyici istiyorsunuz.