向Angular指令控制器添加属性(例如FormController)

时间:2014-12-14 19:43:29

标签: angularjs

如何使用其他方法全局扩展原生Angular FormController

例如,我希望我的表单有一个额外的方法setNew()(类似于已经存在的$setPristine()等)。现在我正在每个控制器中执行此操作,但我希望整个应用程序都可以使用它,而不是在整个地方声明它。

1 个答案:

答案 0 :(得分:2)

您可以通过定义具有相同名称的其他指令来定义指令的其他行为。因此,您似乎可以执行this

angular.module('app', [])
  .directive('ngForm', formControllerDecorator)
  .directive('form', formControllerDecorator);

function formControllerDecorator () {
  return {
    require: 'form',
    link: function ($scope, $element, $attrs, formCtrl) {
      formCtrl.setNew = function () {
        // ...
      };
    }
  };
}

在这种情况下,您需要声明两个指令,因为ngForm实际上是form的别名。