从angularjs ui-grid菜单中删除聚合菜单项

前端之家收集整理的这篇文章主要介绍了从angularjs ui-grid菜单中删除聚合菜单项前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
官方网站( http://ui-grid.info/docs/#/tutorial/209_grouping)上的ui-grid示例提供了一个分组功能,如下所示:

我想要有分组菜单项,但在列菜单中没有聚合(count,sum,max,min,avg),我找不到删除它们的方法.

我试过的一个解决方案是覆盖uiGridGroupingService,通过为groupingColumnBuilder提供一个装饰器,但是该服务根本没有解决,我不禁想知道是否有更简单的方法来实现这一点.

有没有人知道这个问题的任何解决方案?

在这种情况下,装饰器方法可能是最好的方法.没有配置选项可以从列菜单删除它.

PS:装饰器只显示可以移除聚合物品.

这是一个与装饰方法有关的工作.

http://plnkr.co/edit/nzBeqbmEVUwmZF0qgyd6?p=preview

app.config(function($provide){
    $provide.decorator('uiGridGroupingService',function ($delegate,i18nService,gridUtil) {

        $delegate.groupingColumnBuilder = function (colDef,col,gridOptions) {

          if (colDef.enableGrouping === false){
            return;
          }

          if ( typeof(col.grouping) === 'undefined' && typeof(colDef.grouping) !== 'undefined') {
            col.grouping = angular.copy(colDef.grouping);
          } else if (typeof(col.grouping) === 'undefined'){
            col.grouping = {};
          }

          if (typeof(col.grouping) !== 'undefined' && typeof(col.grouping.groupPriority) !== undefined && col.grouping.groupPriority >= 0){
            col.suppressRemoveSort = true;
          } 

          col.groupingSuppressAggregationText = colDef.groupingSuppressAggregationText === true;

          var groupColumn = {
            name: 'ui.grid.grouping.group',title: i18nService.get().grouping.group,icon: 'ui-grid-icon-indent-right',shown: function () {
              return typeof(this.context.col.grouping) === 'undefined' || 
                     typeof(this.context.col.grouping.groupPriority) === 'undefined' ||
                     this.context.col.grouping.groupPriority < 0;
            },action: function () {
              service.groupColumn( this.context.col.grid,this.context.col );
            }
          };

          var ungroupColumn = {
            name: 'ui.grid.grouping.ungroup',title: i18nService.get().grouping.ungroup,icon: 'ui-grid-icon-indent-left',shown: function () {
              return typeof(this.context.col.grouping) !== 'undefined' && 
                     typeof(this.context.col.grouping.groupPriority) !== 'undefined' &&
                     this.context.col.grouping.groupPriority >= 0;
            },action: function () {
              service.ungroupColumn( this.context.col.grid,this.context.col );
            }
          };



          if (!gridUtil.arrayContainsObjectWithProperty(col.menuItems,'name','ui.grid.grouping.group')) {
            col.menuItems.push(groupColumn);
          }

          if (!gridUtil.arrayContainsObjectWithProperty(col.menuItems,'ui.grid.grouping.ungroup')) {
            col.menuItems.push(ungroupColumn);
          }
        }
        return $delegate;
    })
});

猜你在找的Angularjs相关文章