有没有办法通过传递名称来访问控制器中的表单对象?
我的html中有动态表单,其名称类似于name="namedForm_{{$index}}"
。
现在我可以在$index
函数调用中传递ng-submit
以在控制器中生成表单名称。所以它将是namedForm_1
或namedForm_2
等。如何在控制器中获取表单对象以检查其中的表单有效性?
通过检查条件尝试将有效性作为第三个参数传递。但表达式namedForm_{{$index}}.$valid
正在破裂。
<form data-toggle="validator" class="formClass" form-submit-validation=""
name="namedForm_{{$index}}" id="namedForm_{{$index}}"
ng-submit="namedForm_{{$index}}.$valid == true ? vm.submitNamedForm($index, widget, true) : vm.submitNamedForm($index, widget, false)"
autocomplete="off" novalidate>
</form>
或其他任何解决方案?
控制台出错:
答案 0 :(得分:1)
在this
上下文中使用属性访问器:
<form data-toggle="validator" class="formClass" form-submit-validation=""
name="namedForm_{{$index}}" id="namedForm_{{$index}}"
̶n̶g̶-̶s̶u̶b̶m̶i̶t̶=̶"̶n̶a̶m̶e̶d̶F̶o̶r̶m̶_̶{̶{̶$̶i̶n̶d̶e̶x̶}̶}̶.̶$̶v̶a̶l̶i̶d̶ ̶=̶=̶ ̶t̶r̶u̶e̶ ̶?̶ ̶v̶m̶.̶s̶u̶b̶m̶i̶t̶N̶a̶m̶e̶d̶F̶o̶r̶m̶(̶$̶i̶n̶d̶e̶x̶,̶ ̶w̶i̶d̶g̶e̶t̶,̶ ̶t̶r̶u̶e̶)̶ ̶:̶ ̶v̶m̶.̶s̶u̶b̶m̶i̶t̶N̶a̶m̶e̶d̶F̶o̶r̶m̶(̶$̶i̶n̶d̶e̶x̶,̶ ̶w̶i̶d̶g̶e̶t̶,̶ ̶f̶a̶l̶s̶e̶)̶"̶
ng-submit="vm.submitNamedForm($index, widget, this['namedForm_'+$index].$valid)"
autocomplete="off" novalidate>
</form>
ng-submit
指令需要AngularJS表达式,将插值{{ }}
与Angular表达式混合是不明智的。
有关详细信息,请参阅