Подтвердить что ты не робот

Выполняют ли параметры функции директивной ссылки на DI?

В:

module.directive 'name', ->
  (scope, element, attr) ->
    # Whatever implemenation

Используются ли параметры scope, element и attrs функции ссылки на основе определения In-in-Dependency-injection? Если да, то как я могу сделать их доказательством исключения?

Или они полагаются на добрый старый порядок аргументов за то, что прошло в них?

4b9b3361

Ответ 1

Нет, функция связи имеет предопределенный набор параметров.

function link($scope, $element, attrs, ctrl) {
    //Your method
}

Они

  • Область действия элемента
  • Сам элемент (jquery/мини-jquery завернутый)
  • Набор атрибутов элемента
  • Любые контроллеры, используемые в required

Ответ 2

Если вы хотите использовать DI с директивой (как и я), поместите аргументы, которые будут вставляться в директиву factory вместо функции ссылки:

module.directive('name', function($timeout) {
    return function(scope, element, attrs) {
        ...
    };
});

Чтобы разрешить минимизацию, поместите аргумент функции в массив, как и для контроллеров:

module.directive('name', ['$timeout', function($timeout) {
    return function(scope, element, attrs) {
        ...
    };
}]);

См. пример текущего времени в документы.

Изменить: См. здесь для демонстрации, которая вводит службу $timeout. Вы можете сделать то же самое при возврате объекта директивы (например, return {restrict: 'E', link: function() {...}}) вместо функции.