我有一个带指令的更新按钮。当点击按钮时,目标元素应该接收一些新的HTML内容,其中包括ngInclude元素。但是它似乎没有加载文件,而只是包含如下的注释: <!-- ngInclude: nav.html -->
。如果我记录tpl
变量,我会得到{ 0: <!-- ngInclude: nav.html -->, length: 1 }
。这是我的指令和元素生成代码:
指令
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;
}
}
$scope.$apply()
来运行脏检查循环。 - Pankaj Parkar$compile
添加到元素后再进行编译。我还添加了scope.$apply()
。现在它可以加载文件,但仍然无法将这些文件的内容应用到ng-include
中。 - Silas