ng-repeat,数据更新后不更新表格?

时间:2014-10-06 11:39:25

标签: javascript html angularjs angularjs-ng-repeat

我有一个用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]);
        }
    }
} 

1 个答案:

答案 0 :(得分:1)

虽然我同意cerbrus我们需要看到更多的代码,但我会在黑暗中捅:你在两个标签中调用formattedTable(2),这意味着你的过滤永远不会改变。 / p>