记住ng-grid分组打开||折叠状态

时间:2015-02-10 10:11:07

标签: javascript angularjs ng-grid

ng-grid具有gridoption" showGroupPanel"它允许您在网格中输入一个列标题,并按该列对内容进行排序。

var app = angular.module('myApp', ['ngGrid']);
app.controller('MyCtrl', function($scope) {
    $scope.myData = [{name: "Moroni", age: 50},
                     {name: "Tiancum", age: 43}
    $scope.gridOptions = { 
        data: 'myData',
        showGroupPanel: true
    };
});

见这里的例子: http://plnkr.co/edit/Bo11ckeWFiMyJ4tyLVWC?p=preview

在我的应用程序中,我希望每个组的open || closed属性存储在本地存储中,并在重新加载页面时使用。是否有团体的财产或任何人能够以其他方式解决这个问题?

3 个答案:

答案 0 :(得分:2)

这些属性。我在这里找到了他们:

$ scope.gridOptions。$ gridScope.renderedRows []。collapsed = true或false 和 $ scope.gridOptions。$ gridScope.configGroups包含分组列信息

答案 1 :(得分:0)

首先,我不赞成Imyers之前的回应,这让我走上正轨。总之:

您可以通过以下方式访问网格中的每个组:

$scope.gridOptions.ngGrid.rowFactory.aggCache

每个组的折叠值为true | false

当用户打开或折叠组时,我可以通过在gridOptions上添加自定义aggregateTemplate来捕获事件:

$scope.gridOptions = { 
    data: "myData",
    showGroupPanel: true,
    aggregateTemplate: 
    "<div ng-click='row.toggleExpand(); saveGroupState()' ng-style='rowStyle(row)' class='ngAggregate ng-scope' style='top: 0px; height: 48px; left: 0px;'>"+
        "<span class='ngAggregateText ng-binding'>"+
            "{{row.label CUSTOM_FILTERS}} ({{row.totalChildren()}} {{AggItemsLabel}})"+
        "</span>"+
        "<div ng-class="{true: 'ngAggArrowCollapsed', false: 'ngAggArrowExpanded'}[row.collapsed]"></div>"+
    "</div>"
}

saveGroupState()函数然后根据行标签

在localStorage中保存每个行的崩溃状态。
$scope.saveGroupState = function () {
   var groups = $scope.gridOptions.$gridScope.renderedRows;
   for (var i = 0; i < groups.length; i++) {
        localStorage.setItem("taskListGroup_" + groups[i].label, groups[i].collapsed);
   }
}

现在,您可以在localStorage中保存组的状态,以及捕获切换事件并更新该值的函数。

下一步是在ng-grid加载时简单地将初始崩溃状态与localstorage中的值进行比较,并在必要时使用以下方法切换行:

$scope.gridOptions.ngGrid.rowFactory.aggCache[rowIndex].toggleExpand();

我意识到有很多方法可以优化它,我只是想找到一种方法来快速使它工作,一个poc。

欢迎改进的想法。

答案 2 :(得分:0)

我这样做了。请看看这对你来说方便。

请转到ng-grid.js并将 groupsCollapsedByDefault 设为false。

现在,如果在这种情况下刷新网格,网格状态将保持不变(折叠网格将折叠,扩展网格将保持展开。)

谢谢。我希望这会有所帮助,国际象棋!!