2013-04-30 32 views
10

我有一個這樣的控制器:ng-click doens不適用於動態DOM AngularJS?

@VariantModalCtrl = ($scope) -> 
    $scope.upload_variant_image = -> 
    alert("test") 

當我嘗試使用調用upload_variant_image功能NG點擊,它只是(在DOM負載)綁定到一個靜態DOM時的作品,我有這樣一個鏈接:

<%= link_to "test", "" , "ng-click" => "upload_variant_image()" %> 

但是這個元素是在DOM加載後動態添加的,所以ng-click不起作用。

更新 剛剛發現使用$編譯功能,我的答案的一部分: AngularJS + JQuery : How to get dynamic content working in angularjs

但是當我更新的Rails這樣的DOM它不起作用:

$(".modal-body").html($compile("<%= j render("/variants/form", :variant => @variant) %>")(scope)); 
+0

可以請你分享小提琴演示或plunker演示 – 2013-04-30 09:34:01

回答

15

我會警告你,如果你通過角度外部手段操縱DOM,你可能不會完全接受Angular哲學。動態添加鏈接與AngularJS一樣簡單,並且可能比讓外部庫發揮更好更容易和更習慣。下面是一個簡單的例子,根據你的問題:

<ul> 
    <li ng-repeat="item in items"> 
    <a ng-click="upload_variant_image()">{{item.name}}</a> 
    </li> 
</ul> 

所有你需要做的就是電線了適當範圍的數據,這將永遠「只是工作。」這就是說,如果你正在操縱DOM,你可以通過使用$compile service來使AngularJS綁定發生(比如說,按照你的意願ng-click)。不過,請考慮以上更好的選擇。 :)