10

我有一个这样的控制器:

@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));
4

1 回答 1

15

我会警告你,如果你通过 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)。不过,请考虑上述更好的选择。:)

于 2013-04-30T09:33:05.803 回答