角度版本:1.3
我正在尝试编译html并生成插值的html。 ng-if
代码已被注释掉
html
<div ng-if="true">true</div>
我将上述html用作htmlTemplateDom
控制器
var htmlCompiledDom = $compile(htmlTemplateDom)($scope);
var div = angular.element("div#emailContent").append(htmlCompiledDom);
console.log(div.html());
控制台
<!-- ng-if:true -->
因此问题是ng-if
被注释掉了。
有人帮忙!!!!
答案 0 :(得分:0)
据我所知,这正是AngularJS的工作方式。 AngularJS在模板中需要此标记。您会期望什么?
通过禁用config
中的调试信息,可以从模板中删除某些注释:
$compileProvider.debugInfoEnabled(false);
此后,几乎所有(但不是全部)标记都将消失,调试Angular应用程序将不再可行(例如,通过ng-inspector chrome插件)。
@编辑
我不确定为什么console.log
在评论后剪切内容,但整个机制运行良好。检查DOM:
<div id="emailContent">
<!-- ngIf: true -->
<div ng-if="true" class="ng-scope">true</div>
<!-- end ngIf: true -->
</div>
答案 1 :(得分:0)
我在$compile
上看不到任何问题。
此示例按预期方式工作,请检查您是否在做其他事情。
HTML:
<div ng-app="app" ng-controller="controller">
<div id="compile">
</div>
</div>
Javascript:
angular.module('app', [])
.controller('controller', function ($scope, $compile) {
var template = '<div ng-if="true">true</div>';
var content = $compile(template)($scope);
angular.element('div#compile').append(content);
});
如果要执行它,请看一下此fiddle。