我正在尝试编写一个指令,将另一种类型的指令动态添加到 DOM 并编译它们。使用字符串模板时似乎有效,但使用 templateUrl 时失败。这是工作模板字符串的 jsfiddle:
app.directive('clicker', function($compile) {
'use strict';
return {
compile: function(tElement, tAttrs) {
var t = '<div data-pop>Pop</div>';
return function(scope, iElement) {
iElement.click(function() {
$('body').append($compile(t)(scope));
});
};
}
}
});
app.directive('pop', function() {
'use strict';
return {
template: '<div>Testing template</div>'
//templateUrl: 'partials/pop.html'
};
});
但是如果换成 templateUrl(一个 html 文件包含模板字符串中的内容),它只会工作一次。它确实向 DOM 添加了一个元素,但它不包含 templateUrl 内容,也不在动态添加的指令中调用链接函数......
尝试添加其中两个将使 DOM 看起来像:
<div data-pop><!-- content of pop.html --></div>
<div data-pop></div>
<div data-pop></div>