Angularjs指令添加一个类以在表单的提交事件上形成输入

时间:2014-12-28 10:54:47

标签: angularjs angularjs-directive

在提交表单时,我使用ng-classsubmitted类添加到我的输入中

<form name="myform" novalidate>
<input name= "input1" ng-class="{'submitted':myform.$submitted}" ng-model=data.input1/>
.....
....
</form>

虽然它完成了工作,但它太冗长了,而且我需要很多输入。我想创建一个指令,使我的HTML看起来像

<form name="myform" novalidate>
<input name= "input1" set-submitted ng-model=data.input1/>
.....
....
</form>

如何为此目的创建指令?

1 个答案:

答案 0 :(得分:2)

最好简单地使用表单提交时Angular在表单上自动设置的ng-submitted类。

但是出于学术目的,这里有一个简单的指令来设置元素本身的类:

app.directive('setSubmitted', function() {
    return {
        require: '^form',
        link: function(scope, element, attrs, ngFormController) {
            scope.$watch(function() { 
                return ngFormController.$submitted;
            }, function(newVal, oldVal) {
                if (newVal !== oldVal) {
                    element.toggleClass('submitted', newVal);
                }
            })
        }
    };
});