elem.find() 在 AngularJS link 中不起作用

elem.find() is not working in AngularJS link

我有一个来自 templateUrl 的 Angular 'E' 指令,它描述了一个 table 和 ng-repeat 生成的行。在我的 link 名称中,我试图将事件侦听器添加到 table 中的按钮。

指令:

    .directive("reqParts", ["$http", function($http){
   return {
       restrict: 'E',
       templateUrl: '/public/reqParts.html',
       link: function(scope, elem, attr){
           elem.find('.approve').click(function(){
               console.log("clicked");
           });
       }
   };

templateUrl:

<table class="table table-striped">
<tr>
    <th>User</th>
    <th>Title</th>
    <th>Waiting List</th>
</tr>
<tr ng-repeat="req in requests">
    <td>{{req.requestedBy[0].uname}}</td>
    <td>{{req.title}}</td>
    <td>{{req.requestedBy.length - 1}}</td>
    <td><button class='approve'>Approve</button></td>
</tr></table>

我的加载顺序是Jquery -> Bootstrap -> Angular -> Angular指令,所以应该不是问题,根据类似的问题.

编辑: 我尝试过的一些事情:

$('.approve').click() does not work.

console.log($('.approve')) returns [].

console.log(elem.children().children()) returns [tbody]

console.log(elem.find('button')) returns [].

elem.find('tr').click() works for the first row of the table, not the second (Shouldn't find give me the set of all elements matching the selector?)

在控制台中,$('.approve') 有效,`$('table').find('.approve') 有效。

谢谢大家的建议!事实证明,问题不在于 JQuery,而在于 ng-repeat。我遵循了此处描述的解决方法:AngularJS: Linking to elements in a directive that uses ng-repeat

创建一个在 ng-repeat 完成时发出事件的指令属性,传递的第二个参数是 JQuery 包装行,它与 .find()

完美配合