我有一个像这样的控制器:
@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不起作用。
但是当我在Rails中像这样更新DOM时,它不起作用:
$(".modal-body").html($compile("<%= j render("/variants/form", :variant => @variant) %>")(scope));
我警告您,如果您通过Angular外部方法来操纵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)。不过,请考虑上述更好的选择。:)