我有一个像这样的控制器:
@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));
答案 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)。不过,请考虑以上更好的选择。 :)