$编译异常行为

时间:2018-09-21 09:28:30

标签: javascript angularjs conditional-statements

角度版本: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被注释掉了。 有人帮忙!!!!

2 个答案:

答案 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