Выполняют ли параметры функции директивной ссылки на DI?
В:
module.directive 'name', ->
(scope, element, attr) ->
# Whatever implemenation
Используются ли параметры scope
, element
и attrs
функции ссылки на основе определения In-in-Dependency-injection? Если да, то как я могу сделать их доказательством исключения?
Или они полагаются на добрый старый порядок аргументов за то, что прошло в них?
Ответы
Ответ 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() {...}}
) вместо функции.