向AngularJS中的所有表单控制器添加其他方法

时间:2014-04-09 02:19:37

标签: angularjs

基本上我用这个:

<form ng-model="form" ng-submit="save()" name="form" class="form">

它创建了一个新的表单控制器,对吗?我想添加一个方法&#34; addErrors&#34;对于我的应用程序中的所有表单控制器,现在我必须手动完成,有没有办法在我引导我的应用程序时通过配置或运行方法添加它?

问候。

1 个答案:

答案 0 :(得分:2)

鲜为人知的事实:
可以有多个具有相同名称的指令。每一个都覆盖前一个,而是与所有其他人一起应用。

实现您想要的最简单方法是为form元素定义一个自定义指令(实际上您需要两个:form一个,ngForm一个)访问FormController实例并使用自定义行为对其进行扩充。

E.g:

app.directive('form', function () {
    return {
        restrict: 'E',
        require: 'form',   // to get access to the FormController instance
        link: function postLink(scope, elem, attrs, formCtrl) {
            formCtrl.submit = function () {
                alert(formCtrl.$valid ? '*Submit*' : '*Error*');
            };
        }
    };
});

另请参阅此 short demo