Angular 1.3.0。我试图在表单上使用$setPristine
方法,麻烦的是我在同一页面上有多个相似的表单,每个表单都有一个动态名称。我能够找到的$setPristine
的每个示例都使用以下语法:$scope.myFormName.$setPristine()
。我可以尝试通过将动态表单名称的变量部分传递给函数来执行动态eval,以便它可以使用myFormName语法。但似乎将表单明确地传递给函数似乎更清晰,更不用说比使用$ scope更可测试了。
我想要的是什么:
HTML
... loop over things
<form name="thing_form_{{thing.id}}">
... inputs and stuff
<input type="submit" ng-click="thing = reloadThing(thing, thisform); " value="Do">
</form>
的CoffeeScript
$scope.reloadThing = (thing, form) ->
... do stuff
form.$setPristine()
答案 0 :(得分:0)
您可以将表单名称作为字符串传递,并使用它将表单设置为pristine ...
HTML
... loop over things
<form name="thing_form_{{thing.id}}">
... inputs and stuff
<input type="submit" ng-click="thing = reloadThing(thing, 'thing_form_' + thing.id ); " value="Do">
</form>
的CoffeeScript
$scope.reloadThing = (thing, formName) ->
... do stuff
$scope[formName].$setPristine()
如果您绝对需要将表单对象传递给函数而不是在范围内进行评估,则可以在ngrepeat中使用this
从模板访问$scope
。所以你最终会得到这样的东西:
HTML
... loop over things
<form name="thing_form_{{thing.id}}">
... inputs and stuff
<input type="submit" ng-click="thing = reloadThing(thing, this['thing_form_' + thing.id] ); " value="Do">
</form>
的CoffeeScript
$scope.reloadThing = (thing, form) ->
... do stuff
form.$setPristine()