У меня есть директива атрибута, ограниченная следующим образом:
restrict: "A"
Мне нужно передать два атрибута; число и функция / обратный вызов, доступ к ним в директиве с помощью attrs
объекта.
Если бы эта директива была директивой элемента, "E"
я мог бы ограничиться этим:
<example-directive example-number="99" example-function="exampleCallback()">
Однако по причинам, которые я не буду вдаваться в подробности, мне нужно, чтобы директива была директивой атрибута.
Как передать несколько атрибутов в директиву атрибутов?
javascript
parameters
angularjs
attributes
directive
Undistraction
источник
источник
scope: false
), новая область (с обычным прототипным наследованием, т. Е.scope: true
) И изолированная область (т. Е.scope: { ... }
). Какую область видимости создает ваша директива?Ответы:
Директива может обращаться к любому атрибуту, который определен для того же элемента, даже если сама директива не является элементом.
Шаблон:
Директива:
fiddle
Если значение атрибута
example-number
будет жестко запрограммировано, я предлагаю использовать$eval
один раз и сохранить значение. Переменнаяnum
будет иметь правильный тип (число).источник
Вы делаете это точно так же, как и с директивой element. Они будут у вас в объекте attrs, в моем примере есть двусторонняя привязка через область выделения, но это не обязательно. Если вы используете изолированную область видимости, вы можете получить доступ к атрибутам с помощью
scope.$eval(attrs.sample)
или просто scope.sample, но они могут не определяться при связывании в зависимости от вашей ситуации.используется в качестве:
источник
Вы можете передать объект как атрибут и прочитать его в директиве следующим образом:
источник
{{true}}
но он по-прежнему возвращает строковое значениеtrue
.Это сработало для меня, и я думаю, что он более совместим с HTML5. Вы должны изменить свой html, чтобы использовать префикс data-
И в директиве прочитайте значение переменной:
источник
Если вам «требуется» exampleDirective из другой директивы + ваша логика находится в контроллере exampleDirective (скажем, exampleCtrl):
источник