javascript – ng点击不适用于动态DOM AngularJS?

前端之家收集整理的这篇文章主要介绍了javascript – ng点击不适用于动态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));

解决方法

如果您通过角度外部手段操纵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点击).但请考虑以上更好的选项.

猜你在找的JavaScript相关文章