我正在尝试使用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
答案 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);
};
}
将代码移动到超时功能。