我想寫一個指令,動態地向DOM添加另一種類型的指令並編譯它們。它似乎在使用字符串模板時工作,但在使用templateUrl時失敗。這裏的工作模板字符串的的jsfiddle:動態添加angularjs指令
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>
坦率地說,這看起來像一個錯誤。雖然,我無法真正想到一個很好的理由去做你想做的事情。你試圖完成什麼,你不能用ng-repeat完成? –
我有一個用戶列表,我用ng-repeat渲染出來,但我想註冊一個onclick處理程序來動態創建一個模式,這是我創建的一個指令(理想情況下使用templateUrl)。這種模式繼承了ng-repeat的用戶範圍。 – abe
爲什麼不只在頁面上註冊模態指令的單個實例,然後在重複的項目中單擊ng來改變範圍以顯示模態?爲什麼需要動態添加模態指令? –