我想生成一个完整的独立HTML页面。
到目前为止,我已经尝试过:
R2
但这只会返回一个文本元素。
我已成功使用$ interpolate作为变量,但这对ng-repeat和其他指令不起作用。
如何在前端生成完全编译的HTML页面?
如果您的问题是“为什么要这样做?”,请考虑一个页面创建者界面,用户可能会在其中输入一些变量并期望回复HTML页面。
答案 0 :(得分:1)
我不确定我是否完全理解您的问题,但我已经创建了下面的代码段。这是你想要达到的目标吗?我改变了一个关于你的例子的重要事情是,我使用$rootScope.$new()
创建了链接函数的范围。它只使用简单的javascript对象不起作用。
angular.module('test', [])
.controller('test', function($rootScope, $rootElement, $compile) {
var element = angular.element('<html><body><div>{{stuff}}</div><ul><li ng-repeat="item in list">{{item}}</li></ul></body></html>');
var scope = $rootScope.$new();
scope.stuff = 'Things';
scope.list = [
'item1',
'item2'
];
var result = $compile(element)(scope);
$rootElement.append(result);
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="test" ng-controller="test"></div>