我在使用 AngularJS 和 $timeout 时遇到了一些问题。
加载页面后,我需要运行一些代码。Http.get() 加载项目并且 ng-repeat 将它们显示在表格中。然后我需要在单击它时运行代码以突出显示行。
我找到了使用 $timeout 的解决方案。
$timeout(function () {
console.log('in timeout');
$scope.highlightRows();
});
这确实有效,但并非每次都有效。在函数中,我记录了表中的行数,有时我得到 0,因此未注册单击处理程序并且突出显示不起作用。
$scope.highlightRows = function () {
console.log($("#tripsTable").children("tbody").children("tr").length);
$("#tripsTable").children("tbody").children("tr").children().click(function () {
console.log('row click');
$("#tripsTable").children("tbody").children("tr").removeClass("focusedRow");
$(this.parentNode).addClass("focusedRow");
});
};
尝试模拟时,我必须按 Ctrl + F5 刷新。
控制台日志:
in timeout tripsController.js:14
0
我找不到任何解决此问题的方法,任何建议将不胜感激
:)
谢谢马克
编辑: 这是我的 HTML
<table class="table table-bordered" id="tripsTable">@*table-hover*@
<thead>
....
</thead>
<tbody>
<tr ng-repeat="trip in tripsVM.tripsList | orderBy: 'startDate'" ng-class="(trip.tripID == 0) ? 'newRow' : ''" class="row">
....