2014-12-14 2 views
1

Как можно глобально расширить нативный угловой FormController с дополнительными методами?Добавление свойств в Угловой директивный контроллер (например, FormController)

Например, я хотел бы, чтобы мои формы имели дополнительный метод setNew() (аналогично уже существующим $setPristine() и т. Д.). Сейчас я делаю это в каждом контроллере, но я бы хотел, чтобы он был доступен во всем приложении, не объявляя его повсюду.

+0

Что вы подразумеваете под нативным Угловым FormController? Можете ли вы также дать некоторое объяснение по пользовательским методам, какова их цель? – Nexus23

+0

@ Nexus23 отредактировал – cyberwombat

+0

проверить это: http://stackoverflow.com/questions/16539999/angular-extending-controller – Nexus23

ответ

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.

+0

Pefect! Я строил директиву, чтобы добавить к моей форме, но это намного лучше. – cyberwombat