2014-01-11 83 views
0

你好,我已經綁定了一些HTML元素。看看下面的代碼如何獲得點擊事件

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

在控制器代碼

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

這裏我的HTML是否正確裝入。當我點擊div時,我無法獲得警報。

回答

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綁定,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

+0

它給了我下面的錯誤 未捕獲的錯誤:選擇不執行 –

+0

包括JQUERY之前AngularJs會做的伎倆 –

+0

是在有角的js任何解決方案。 我試圖以以下格式對它進行編譯 $ scope.myHTML = $ compile($ scope.myHTML)($ scope); 它給我輸出的div如下 [[object HTMLDivElement]] –

0

你在你的代碼中的語法錯誤:

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

你應該用單引號括起來myFunc(),像這樣:

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

試過沒有工作 –