所以我调用一个html模板,并希望用angular绑定数据,所以我得到数据绑定,我得到html,当我尝试编译它将返回所有html绑定但在(我认为)对象,我该怎么做才能使它成为HTML。
这是代码
$.get("file.html", function(partial){
var scope = $rootScope.$new();
scope.data = result;
var el = angular.element(partial);
var compiled = $compile(el)(scope);
var finalHtml = el[0];
$timeout(function(){
var calendar = window.open();
calendar.document.write(finalHtml);
calendar.focus();
calendar.print();
});
});
我已经尝试过.html .toString String()没有效果
先谢谢你
答案 0 :(得分:4)
您的compiled
变量是一个可插入文档的角度jQuery或jqlite元素。如果你想获得它的html,你可以使用底层节点上的outerHTML
属性(通过抓取第一个数组元素compiled[0]
得到底层节点) - https://developer.mozilla.org/en-US/docs/Web/API/Element/outerHTML < / p>
var compiled = $compile(el)(scope);
// scope.$digest() // only call if not within an angular $digest already
$timeout(function() {
var finalHtml = compiled[0].outerHTML;
...
}
根据文档&#34;链接之后,直到调用$ digest后才会更新视图,这通常由Angular自动完成。&#34;因此,您必须手动调用scope.$digest()
或实际使用一个有角度的API来使用$http
执行请求,或者最好使用$templateRequest
,例如@ThinkingMedia建议。运行角度$ digest后,您可以访问更新后的视图。
我在这里创建了一个plunker,它使用AngularJS api显示它是如何正常工作的:http://plnkr.co/edit/rFcfgB3FWhsfyySfr0rU?p=preview
我还改变了弹出窗口的打开方式,以处理弹出窗口的安全隐含。