ui-grid:global / defaul columnDef

时间:2016-04-22 10:19:33

标签: angularjs angular-ui-grid

我想为所有列启用headerTooltip,并且我不想为不同表格的所有列重复此操作。

有没有办法设置全局columnDef或覆盖默认值?

如果没有全球化的方式,我也有兴趣以每桌为基础这样做。

1 个答案:

答案 0 :(得分:2)

自定义任何角度组件的最佳方法是查看源代码,然后编写一个装饰器,您的应用程序可以在其中修改组件而无需破解组件源。在这种情况下,我们可以看到我们需要更改GridColumn.prototype.updateColumnDef函数,它将设置从列def复制到列本身。我们安装自己的默认值(如果它未定义),然后让未修改的方法执行它的操作。这样,新的全局默认值仍然可以在单个网格中被覆盖。

angular.module(name).config(
    $provide => {
        $provide.decorator('GridColumn', $delegate => {
            const {updateColumnDef} = $delegate.prototype;
            $delegate.prototype.updateColumnDef = function(colDef, isNew) {
                if(colDef.headerTooltip === undefined)
                    colDef.headerTooltip = true;
                updateColumnDef.call(this, colDef, isNew);
            };
            return $delegate;
        });
    }
});