通过ng-click访问angularj表单对象而不传递模型名称

时间:2015-11-19 15:14:17

标签: angularjs

在我的应用中,我有多个不同名称的表单。

我需要在从ng-click事件调用的函数中访问角形式对象

示例:

https://jsfiddle.net/EvgeniiMalikov/fpt5kcba/

出于某些原因,每次ng-click attr应始终看起来一样,所以我不能只写<a ng-click="model.func(form.name)"> 有没有办法在不将表单模型传递给函数的情况下执行此操作?也许可以通过事件访问表单或将$this.form之类的内容传递给函数。

请注意:在示例中,我有一个表单,在实际应用中 - 许多不同名称的表单

1 个答案:

答案 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;保存或重置后的表单。