ng-click不适用于动态DOM AngularJS?

时间:2013-04-30 09:15:37

标签: javascript dom angularjs

我有一个像这样的控制器:

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

当我尝试使用ng-click调用upload_variant_image函数时,它仅在绑定到静态DOM时有效(当DOM加载时),我有这样的链接:

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

但是在加载DOM之后动态添加此元素,因此ng-click不起作用。

更新 刚刚使用$ compile函数找到了我的答案的一部分: AngularJS + JQuery : How to get dynamic content working in angularjs

但是当我在Rails中更新这样的DOM时它不起作用:

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

1 个答案:

答案 0 :(得分:15)

我会警告你,如果你通过Angular-external手段操纵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)。不过,请考虑以上更好的选择。 :)