別のタイプのディレクティブを 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 の内容を含まず、動的に追加されたディレクティブでリンク関数を呼び出しません ...
そのうちの 2 つを追加しようとすると、DOM は次のようになります。
<div data-pop><!-- content of pop.html --></div>
<div data-pop></div>
<div data-pop></div>