如何检查多个内部形式以查看它们是否是预先形成的?

时间:2016-05-13 12:59:39

标签: angularjs

我有这样的代码:

<div ng-click="wos.wordWordFormRowClicked(wf, $index)"
     ng-form="wordFormNgForm_{{$index}}"
     ng-repeat="wf in wos.word.wordForms">

    <div ng-show="wordFormNgForm_{{$index}}.$pristine == true">Pristine</div>

    ...

这会设置一个或多个表单。

有没有办法可以在循环中检查每个创建的表单是否仍然是原始的?我知道我可以在表单上添加$ pristine的设置,但我想要的是从我的服务中循环遍历所有表单的东西。例如,它可能是2,3或4个具有如下名称的表单:

wordFormNgForm_1
wordFormNgForm_2
wordFormNgForm_3
wordFormNgForm_4

或者已经设置了很多这些。但我不确定是否有办法检查每一个。我不确定这是否有帮助,但这些表格位于另一种形式:

<div ng-form="wos.wordNgForm">
    <div ui-view></div>
</div>

1 个答案:

答案 0 :(得分:1)

我认为你所追求的是$ setPristine()方法。在表单控制器上,此方法用于将表单(完全包括所有子/表单)设置为pristine。还有一些可能有用的,你可以阅读here。这不会重置表单的内容,如果您愿意,则必须将其作为附加任务。 $ setPristine的想法是说“嘿,这个形式没有受到用户的影响”,即使它是......它可能是形式新的起点,例如在用户设置了一些默认值之类的东西之后。它完全按照它在锡上所说的那样,简单地将所有东西再次设置为原始状态。

例如,myController的范围包含myForm,你可以做

$scope.myForm.$setPristine();

嘿presto,Pristine-up-up,一路下来!

如果您不需要确切知道哪些子表单是脏的,只是想将它们全部重置为Pristine,这只会对您有所帮助。

在我的HTML中,我有以下内容:

<form id="myForm" name="myForm" ng-controller="MyController as myCtrl">
    <ng-form name="child_form_{{::id}}" ng-repeat="id in ids">
        <!--Stuff here -->
    </ng-form>
</form>

其中$ scope.ids是一个列表(可能是这个实例中的数组)

在这种情况下,如果你想知道哪些子表单是脏的,你有你的列表范围,所以从控制器内你必须遍历你的$ scope.ids并通过重新创建名称来获取表单,例如child_form_1。 (但是,如果你的目标是将它们全部重置为原始状态,我知道“哪个”儿童形式是脏的,我觉得没什么好处。)