我有一个属性指令,我正在使用该指令向元素添加一些ngRepeat
逻辑。该指令的简化版本是:
app.directive(
"repeaty",
[
"$compile",
function repeaty(
$compile
) {
return {
link: function link($scope, $element) {
$element.attr("ng-repeat", "item in [1,2,3,4,5]");
$element.removeAttr("data-repeaty");
$element.removeAttr("repeaty");
$compile($element)($scope);
},
priority: 1000,
restrict: "A",
template: "<ng-transclude/>",
terminal: true,
transclude: true
};
}
]
);
注意在模板中使用包含。按原样使用此伪指令将产生this transclusion error。该错误指向指令定义中缺少的transclude: true
,但是很明显它在那里。如果我将模板更改为静态模板,则它可以按我期望的方式工作(不包含所需的包含)。某些搜索使我怀疑它与$compile
如何处理范围有关,但是我的研究还远远不够。
为什么在这里不包含包容性,并且有一种方法可以使它按需要工作?