我有一个用ng-repeat
填充的表格,我还有一个用于更改表格数据的导航按钮。在我对html文件中的数据进行自定义过滤之前,如下所示:
ng-repeat="car in carList | filter:tableFilter"
即便如此,它也会减慢我的网站速度。所以现在我在控制器中更新我的表数据。但还有另一个问题,ng-repeat
不想更新。所以无论我将更新我的数据多少,表格仍然是相同的。
我该如何解决?
这是我的ng-repeat
:
<tbody>
<tr ng-repeat="car in sortedCarList">
....
这是我的导航栏:
<section class="tab" ng-controller="TablePanelCtrl as panel">
<ul class="nav nav-pills car-navigation">
<li ng-class="{ active: panel.isSelected(1)}">
<a href ng-click="panel.selectTab(1); initCarList(1); resetActiveRow(); formattedTable(2); hideTypeBox()">Sort by Reviews</a>
</li>
<li ng-class="{ active: panel.isSelected(2)}">
<a href ng-click="panel.selectTab(2); initCarList(2); resetActiveRow() formattedTable(2); hideTypeBox()">Sort by Rating</a>
</li>
</ul>
initCarList()
根据标签号更改数据。
formattedTable()
根据可由用户更改的过滤器值过滤表格数据。
更新:
我的格式化功能:
$scope.formattedTable = function(index){
$scope.initCarList(index);
$scope.sortedCarList = [];
var carlistLength = $scope.carList.length;
for (var i=0;i<carlistLength;i++){ // just check every row if values passes user requirements
var rowBool = $scope.tableFilter($scope.carList[i]);
if (rowBool){
$scope.sortedCarList.push($scope.carList[i]);
}
}
}
答案 0 :(得分:1)
虽然我同意cerbrus我们需要看到更多的代码,但我会在黑暗中捅:你在两个标签中调用formattedTable(2)
,这意味着你的过滤永远不会改变。 / p>