2

任何人都知道如何让 ng-grid 从外部排序功能更新?

我已将 userExternalSort 设置为 true。然后,我有这个代码(Coffeescript):

$scope.$on 'ngGridEventSorted', (event, data) ->
    console.log "Before sort " + $scope.recs[0].location

    $scope.recs.sort (a, b) ->
        if data.directions[0] = "asc"
            return a.location > b.location ? 1 : -1
        else
            return a.location > b.location ? -1 : 1

    console.log "After sort " + $scope.recs[0].location

我的函数实际上确实排序。但是,ng-grid 从不更新。我试过 $scope.$apply() 无济于事——它已经在 $apply 中了。

谢谢。

4

1 回答 1

6

您的代码存在一些问题,为了帮助您充分使用代码,我需要查看您的 gridOptions,以便查看您是否正确更新了数据。如果我们也能用一些代码得到一个 plunkr 也可能会有所帮助

第一件事是选项是“useExternalSort”,它实际上会关闭 ngGridEventSorted 事件,所以你需要使用类似这样的东西:

$scope.$watch 'gridOptions.ngGrid.config.sortInfo', (newVal,oldVal) ->
    console.log "Before sort " + $scope.recs[0].location

    $scope.recs.sort (a, b) ->
        if data.directions[0] = "asc"
            return a.location > b.location ? 1 : -1
        else
            return a.location > b.location ? -1 : 1

    console.log "After sort " + $scope.recs[0].location
于 2013-07-25T16:54:22.007 回答