我如何获得点击事件

时间:2014-01-11 12:34:26

标签: angularjs ng-bind-html

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

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

控制器代码是

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

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

2 个答案:

答案 0 :(得分:0)

您的代码中存在语法错误:

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

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

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

答案 1 :(得分: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>

DEMO

另一种解决方案是编写我们自己的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);
         })
       }
    }
});

DEMO