在我的应用中,我有多个不同名称的表单。
我需要在从ng-click事件调用的函数中访问角形式对象
示例:
https://jsfiddle.net/EvgeniiMalikov/fpt5kcba/
出于某些原因,每次ng-click attr应始终看起来一样,所以我不能只写<a ng-click="model.func(form.name)">
有没有办法在不将表单模型传递给函数的情况下执行此操作?也许可以通过事件访问表单或将$this.form
之类的内容传递给函数。
请注意:在示例中,我有一个表单,在实际应用中 - 许多不同名称的表单
答案 0 :(得分:2)
我已经分享了你的jsfiddle,告诉你如何做到这一点:https://jsfiddle.net/fpt5kcba/2/
当您为表单指定了名称name="mv.form"
时,您可以在控制器中以相同的方式访问它。
angular.module('myApp', []).controller('myCtrl', function () {
var mv = this;
mv.reset = function () {
mv.text='';
mv.form.$setPristine();
}
});
修改强>
如果你想要的是动态制作,请看看这个jsfiddle:https://jsfiddle.net/fpt5kcba/5/
这是方式:
<div ng-app="myApp" ng-controller="myCtrl as mv">
<div ng-repeat="form in mv.forms">
{{form.id}}
<form name="mv.{{form.id}}">
<input ng-model="form.text"><br>
<a href="#" ng-show="mv[form.id].$dirty" ng-click="mv.reset(form.id, $index)">reset</a>
</form>
</div>
</div>
控制器:
angular.module('myApp', []).controller('myCtrl', function ($scope) {
var mv = this;
mv.forms = [
{
id: "form1",
text: ""
},
{
id: "form2",
text: ""
}];
mv.values = {
form1: "",
form2: ""
};
mv.reset = function (formId, index) {
mv.text='';
mv.forms[index].text = "";
mv[formId].$setPristine();
}
});
总是计算$ setPristine不用于清算字段。
将表单设置为其原始状态。
可以调用此方法来删除&#39; ng-dirty&#39;上课并设置 形成其原始状态(ng-pristine类)。这种方法也会 传播到此表单中包含的所有控件。
在我们需要时,将表单设置回原始状态通常很有用 重用&#39;保存或重置后的表单。