0

您好,我已经绑定了一些 HTML 元素。看看下面的代码

<DIV ng-bind-html-unsafe="myHTML"></DIV>

在控制器代码是

$scope.myHTML="<DIV ng-click="myFunc()"></DIV>"
$scope.myFunc= function(){
alert("TEST");
}

在这里,我的 html 已正确加载。当我单击 div 时,我无法收到警报。

4

2 回答 2

0

您的代码中有语法错误:

$scope.myHTML="<DIV ng-click="myFunc()"></DIV>"

您应该在 周围使用单引号myFunc(),如下所示:

$scope.myHTML="<DIV ng-click='myFunc()'></DIV>"
于 2014-01-11T13:00:10.347 回答
0

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);
         })
       }
    }
});

演示

于 2014-01-11T13:01:37.960 回答