2

我想将 AngularJS 模板编译为纯文本。即,我想通过阅读页面上 DOM 中呈现的模板的内部 HTML 来获得你会得到的东西。但没有实际将模板渲染到页面。

我试过$compile这样使用

$compile(template)($scope).html()

但它似乎没有像这个 jsFiddle中所展示的那样按预期工作。jsFiddle 和我的项目中的结果只不过是 Angular 插入的评论。

编译 Angular 模板并将结果作为 HTML 字符串返回的正确方法是什么?

如果有人好奇我为什么需要这样做:渲染的 HTML 将被发送到后端,后端将其转换为 pdf 文件,然后再次发回。

4

2 回答 2

2

如果您想要将范围应用于视图的最终输出,我相信您必须等到$digest调用完成。

我更新了小提琴以将完成的 HTML 写入控制台。我使用 setTimeout() 来等待$digest调用完成,它会显示将在 HTML 中显示的实际结果。

小提琴

于 2013-10-23T13:48:11.530 回答
0

应该做这样的事情。我想隔离范围是可选的,但是您拥有的任何模型都需要成为 a 的一部分Scope

var template = '<div ng-repeat="item in items">{{item}}</div>',
    element = angular.element(template ),
    scope = $rootScope.$new(true); //isolated scope

scope.items = ['foo', 'bar', 'frob'];

// apply bindings!
$compile(template)(scope);

var html = template[0].outerHTML;
于 2013-10-23T13:32:12.283 回答