我想先编译一个angular指令来追加属性,然后再将其编译为其他指令。反正我是否可以使用compile:pre post或者编译这个
属性追加 至 指示 至 家长指令模板?
答案 0 :(得分:6)
假设你有一个指令<foo></foo>
(restrict: 'E'
)。您想要动态添加属性(〜修改原始DOM,而不是模板),这应该在指令的$compile
步骤中完成。添加属性后,要使angularjs实现是否有任何可以触发的新指令,您必须编译新元素。例如,这就是ng-include的作用。它包含DOM中的元素并编译它们,因此可以使用新的指令。
指令foo
:
compile: function ($tElement, $tAttrs) {
var el = $tElement[0];
el.setAttribute('bar', 'newFancyValue');
return function (scope, element, attrs) {
// you can even append html elements here, for example the template
element.append("<book></book>");
$compile(element)(scope);
};
}
和指令bar
(带restrict: 'A'
)可以包含您想要的任何代码。
这是您可能还想阅读的相关问题A general directive with a specific type (UI components inheritance)
查看文档中的transclude函数,了解如何在foo
book
的先前内部元素