如何让我的ng-grid重新排序?

时间:2014-03-13 22:17:21

标签: angularjs ng-grid

我在ng-grid中显示了一些数据。

部分数据在页面加载后几乎立即显示;其他数据较慢,我们收到后会将其拼接。

在执行此操作时,如果网格设置为在网格中呈现数据的前半部分时对数据进行排序,则排序可能会中断。

有没有一种很好的方法可以让网格重新排序并保留多个列,并在收到所有数据后对方向进行排序?

JS

var app = angular.module('myApp', ['ngGrid']);

app.controller('MyCtrl', function ($scope) {
    $scope.myData = [{name: "Moroni", age: 50},
                     {name: "Tiancum", age: 43},
                     {name: "Jacob", age: 43},
                     {name: "Nephi", age: 29},
                     {name: "Enos", age: 34}];

    $scope.gridOptions = { 
        data: 'myData',
        columnDefs: [{ field: "name", },
                     { field: "age" },
                     { field: "state" }],
        sortInfo: {
            fields: [ 'age', 'state' ],
            directions: [ 'asc', 'desc' ]
        }
    };

    var lateData = [
        { name: 'Moroni', state: 'NY' },
        { name: 'Tiancum', state: 'CA' },
        { name: 'Jacob', state: 'PA' },
        { name: 'Nephi', state: 'AK' },
        { name: 'Enos', state: 'MO' }
    ];

    setTimeout(function () {
        $scope.myData = _.merge($scope.myData, lateData);
        $scope.$digest();
    }, 3000);
});

HTML

<div ng-app="myApp">
    <div ng-controller = "MyCtrl">
        <div ng-grid="gridOptions" class="gridStyle"></div>
    </div>
</div>

CSS

.gridStyle {
    border: 1px solid rgb(212, 212, 212);
    width: 100%;
    height: 500px;
}

http://jsfiddle.net/akukucka/4vrQq/

1 个答案:

答案 0 :(得分:1)

不确定这是否是您想要的:

$scope.resort= function(){
  $scope.gridOptions.sortBy('age');
};

Plunker is here

由于我没有您的任何代码,您必须找到一个地方/何时为您自己进行排序。