2014-03-13 70 views
1

我有一些數據以ng格表示。如何讓我的網格重新排序?

這些數據中的一些在頁面加載後幾乎立即顯示;其他數據速度較慢,一旦收到,我們會將其拼接。

在此過程中,如果網格設置爲在網格中呈現數據的前半部分時排序不在那裏的數據,則排序可能會中斷。

有沒有一種很好的方式來告訴網格重新排序自己,並保存多個列以及排序方向一旦所有的數據已收到?

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

你可以添加一些代碼嗎? –

+1

觸發更多數據加載到網格中的特定操作是什麼? – trevorc

回答

1

不知道這是否是你想要的東西:

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

Plunker is here

因爲我沒有任何代碼,你必須找到一個地方/時做整理自己。

+1

謝謝你的迴應!我用更多的細節和小提琴更新了原始問題。 –