我有一個帶有指令的更新按鈕。點擊按鈕時,目標元素應該會收到一些包含ngInclude元素的新html。它似乎沒有加載該文件,但它所做的只是包含像這樣的註釋<!-- ngInclude: nav.html -->
。如果我登錄tpl
變量,我會得到{ 0: <!-- ngInclude: nav.html -->, length: 1 }
。這是我的指令和元素生成器代碼。AngularJS在加載應用程序後動態添加ng-include
指令
angular.module('myApp').directive("contentControl"
,["$compile"
,function($compile){
return {
link: function(scope, element, attrs) {
element.bind("click", function() {
var $container = $(this).closest('#editor_contenteditorcontainer');
var html = "";
$container.find('.row').each(function() {
var $args = $(this).find('form').serializeObject();
html += ' ' + generateContent($args);
});
angular.element(document.getElementById('responsiveviewport')).html(html);
$compile(html)(scope);
scope.$apply();
});
}
}
}]);
發電機
function generateContent($arg){
switch($arg['name']){
case 'Partial':
return '<div ng-include src="\''+$arg['content']+'\'"></div>';
break;
default:
break;
}
}
你需要做的'$範圍。$適用()'從點擊事件運行週期消化 – 2015-04-04 06:00:11
@pankajparkar感謝您的答覆。我已經更新了我的答案。我發現'$ compile'需要在將它添加到元素之後。我也添加了'scope。$ apply()'。它現在將加載這些文件,但它仍然不會將這些文件的內容應用於'ng-include' – Silas 2015-04-04 06:50:27