在主页面上有初始化ng-app
和ng-controller
:
<body ng-app="app">
<div ng-controller="MyController">
<!-- Here is loaded HTML from AJAX response -->
</div>
</body>
Ajax响应看起来像:
<div>{{var}}</div>
所以,这个{{var}}
显示像文本一样,我认为因为这个HTML没有与所有DOM页面一起加载。怎么解决?
答案 0 :(得分:2)
解决方案:
.directive('bindUnsafeHtml', ['$compile', function ($compile) {
return function(scope, element, attrs) {
scope.$watch(
function(scope) {
// watch the 'bindUnsafeHtml' expression for changes
return scope.$eval(attrs.bindUnsafeHtml);
},
function(value) {
// when the 'bindUnsafeHtml' expression changes
// assign it into the current DOM
element.html(value);
// compile the new DOM and link it to the current
// scope.
// NOTE: we only compile .childNodes so that
// we don't get into infinite loop compiling ourselves
$compile(element.contents())(scope);
}
);
};
}])
模板:
<div bind-unsafe-html="templateForm"></div>
Ajax响应:
request.success(function (data) {
$scope.templateForm = data.html;
});
答案 1 :(得分:1)
遗憾的是,你想要实现的目标根本不容易。
在这种情况下,你处于AngularJS和Jquery的边界。
你可以像在这个答案中解释的那样做: https://stackoverflow.com/a/18157958/669561
但我建议你改变策略并直接使用AngularJS $http
- 服务来执行Ajax-Request。
您还可以使用ng-include
-Directive
<body ng-app="app">
<div ng-controller="MyController">
<ng-include src="your url with HTML content">
</div>
</body>