我有一个这样的控制器:
@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点击).但请考虑以上更好的选项.