使用ui-router切换视图时,保持表单输入字段的$ dirty状态

时间:2014-10-29 10:07:22

标签: javascript angularjs forms validation angular-ui-router

在切换嵌套视图时,是否有一种简单的方法可以将输入字段的$ pristine / $ dirty状态保存在包含嵌套视图的表单中?

我的应用具有以下结构:

<div ui-view> <!-- main view - this stays active -->

  <div ng-form="form.product">

    Some content

    <div ui-view></div> <!-- sub view - this changes and holds different parts of the form -->

    <!--
    the content of this inner view (its template) looks something like this:

    <input type="text" ng-model="myModel.someProperty"/>
    -->

  </div>

</div>

保存表单数据的控制器位于外部视图控制器上。切换选项卡(以及内部视图的内容)时,内部输入元素的值始终显示正确的值。我可以更新值,一切正常,除了一件事:验证状态正在重置。

当我更改输入字段时,外部表单和内部输入元素变为$ dirty - 但是当我切换内部视图然后再返回时,外部表单仍然是$ dirty 但是内部输入元素是$ pristine再次,即使输入元素仍然保持更改的值,外部表单仍然是$ dirty。

我认为输入元素$ dirty / $ pristine状态在内部视图被卸载然后再次加载时被重置,尽管它们的值会在外部窗体进入视图时立即使用模型值更新。

当我在没有太多额外代码的情况下切换到另一个视图时,是否有一种简单的方法可以保持$ dirty状态(比如跟踪每个singe输入元素的变化)?

0 个答案:

没有答案