您好,我已经绑定了一些 HTML 元素。看看下面的代码
<DIV ng-bind-html-unsafe="myHTML"></DIV>
在控制器代码是
$scope.myHTML="<DIV ng-click="myFunc()"></DIV>"
$scope.myFunc= function(){
alert("TEST");
}
在这里,我的 html 已正确加载。当我单击 div 时,我无法收到警报。
您好,我已经绑定了一些 HTML 元素。看看下面的代码
<DIV ng-bind-html-unsafe="myHTML"></DIV>
在控制器代码是
$scope.myHTML="<DIV ng-click="myFunc()"></DIV>"
$scope.myFunc= function(){
alert("TEST");
}
在这里,我的 html 已正确加载。当我单击 div 时,我无法收到警报。
您的代码中有语法错误:
$scope.myHTML="<DIV ng-click="myFunc()"></DIV>"
您应该在 周围使用单引号myFunc()
,如下所示:
$scope.myHTML="<DIV ng-click='myFunc()'></DIV>"
ng-bind-html-unsafe
不支持指令。我们必须以某种方式编译绑定的 html。
尝试通过编写指令来编译它:
app.directive("compile",function($compile,$timeout){
return {
priority:-1,
link:function(scope, element, attrs) {
$timeout(function(){
$compile(element.contents())(scope);
});
}
}
});
用它:
<div ng-bind-html-unsafe="myHTML" compile></div>
另一个解决方案是编写我们自己的 ng-bind-html
app.directive("myNgBindHtml",function($compile){
return {
link:function(scope, element, attrs) {
scope.$watch(attrs.myNgBindHtml,function(value){
element.html(value);
$compile(element.contents())(scope);
})
}
}
});