我无法在表格的内部选择ng-repeat?

时间:2013-08-09 07:12:05

标签: jquery angularjs ng-repeat

我正在尝试使用angularjs为表编写指令,但选择表> tr仅产生表的第一行。 tr的内部tbody不包含在result中。当我从此语句中删除ng-repeat =“header in header”时

<table>
    <thead>
        <tr>
            <th ng-repeat="header in headers">{{header}}</th>
        </tr>
    </thead>
    <tbody>
        <tr ng-repeat="header in headers">   // I removed ng-repeat to select all rows
            <td ng-repeat="header in headers">{{header}}</td>
        </tr>
    </tbody>
</table>

成功选择表的所有行。我可以使用console.log查看四个tr对象。如何在指令链接函数中选择表中的所有行?谢谢你的时间。

这是我的plnk: http://plnkr.co/edit/fvvC85

2 个答案:

答案 0 :(得分:2)

似乎指令在ng-repeat完成之前加载。 我将您的代码移动到 $ timeout ,我看到它正常工作。

$timeout(function(){
    console.log(element.find('tr'));
    console.log(element.find('tr').length);
},1000);

你需要注入$ timeout来完成这项工作:

directives.directive('zenTable', function($compile,$timeout) {

不确定这是否是一种理想的方法。

答案 1 :(得分:0)

compile : function($element, $attrs){
    return function(scope,element,attrs){
        setTimeout(function() {
             console.log(element.find('tbody').children());
        },100);

    };
}

将代码移动到超时功能。