Angularjs 通过ng单击访问angularj表单对象,而不传递模型名称
在我的应用程序中,我有多个具有不同名称的表单 我需要访问从ng click事件调用的函数中的angular form对象 例如: 由于某些原因,每次ng click attr的外观应该始终相同,因此我不能只编写Angularjs 通过ng单击访问angularj表单对象,而不传递模型名称,angularjs,Angularjs,在我的应用程序中,我有多个具有不同名称的表单 我需要访问从ng click事件调用的函数中的angular form对象 例如: 由于某些原因,每次ng click attr的外观应该始终相同,因此我不能只编写 有没有一种方法可以在不将表单模型传递给函数的情况下实现这一点?可以通过事件访问表单,或者将类似$this.form的内容传递给函数 请注意:在示例中,我有一个表单,在real app中-多个表单具有不同的名称我用你的JSFIDLE向你展示了如何操作: 当您为表单指定名称时,name=“
有没有一种方法可以在不将表单模型传递给函数的情况下实现这一点?可以通过事件访问表单,或者将类似$this.form的内容传递给函数
请注意:在示例中,我有一个表单,在real app中-多个表单具有不同的名称我用你的JSFIDLE向你展示了如何操作:
当您为表单指定名称时,name=“mv.form”
您可以在控制器中以相同的方式访问它
angular.module('myApp', []).controller('myCtrl', function () {
var mv = this;
mv.reset = function () {
mv.text='';
mv.form.$setPristine();
}
});
编辑:
如果您希望动态地创建它,请查看以下JSFIDLE:
这是一种方式:
<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>
始终计算$setPristine不用于清除字段
将窗体设置为原始状态
可以调用此方法来删除“ng dirty”类并设置
形成其原始状态(ng原始类)。这种方法也将
传播到此窗体中包含的所有控件
当我们需要时,将表单设置回原始状态通常很有用
保存或重置表单后“重用”表单
您不需要将表单传递给控制器,它在与控制器关联的$scope上可用。由于您使用的是controllerAs
语法,并且您使用控制器名称(mv.form
中的“mv”)命名表单,因此您只能使用mv.form
访问控制器中的表单。。。不需要将它传递到您的reset()
函数中。是的,我知道。但是我有很多表单和一个用于所有表单的函数。您只是想通过reset函数重置所有表单元素吗?或者你想重置单个表单元素,为其提供该字段特有的重置功能?我知道,但在real app中,我有不同的表单,名称不同,所以我不能只在函数中硬编码表单名称如果是这样的话,你想使其尽可能动态,指令最适合此功能。@EvgeniiMalikov查看编辑后的答案。希望有帮助@是的,指令是正确的方法。您的指令可能需要Angular FormController,然后不管表单名称是什么,b/c表单控制器被传递到指令中。@evgenimalikov中对此进行了解释
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();
}
});