extjs - 重用部分配置有哪些好方法?

标签 extjs extjs6

例如,我有几个共享公共(public)列的网格(问题不限于列,任何配置对象)。目前我正在做这样的事情:

//columns.js
var columns = {"reusable1": {...}, "reusable2": {...}};

//grid views
Ext.define('MyApp.view.Grid', {
    columns: [
        {text:'inline column1'},
        columns.reusable1,
        columns.reusable2,
        {text:'inline column2'},
    ]
});

这样就完成了工作,但是以类似的方式工作的更好方法是什么(无需为每个配置 block 创建唯一的 xtype,或修改 constructorinitComponent 中的配置)。我只是希望能够像以前一样将其他可重用的配置片段内联。

最佳答案

我认为大多数其他选项可能会降低可读性或看起来完全令人费解 - 但您可以重写基类并包括 “命名” 列的配置。

我假设当您说“不在构造函数中修改配置”时,您指的是实现列的网格而不是可以在其他地方整理的类似逻辑。

Ext.define('App.override.grid.column.Column', {
    override: 'Ext.grid.column.Column',

    config: {
        name: null    
    },

    statics: {
        namedColumns: {
            reusable1: { /* ... */ },
            reusable2: { /* ... */ },
            // ...
        }
    },

    constructor: function(args){
        var _args = args || {},
            statics = Ext.grid.column.Column,
            defaults = statics.namedColumns[_args.name] || {};
        this.callParent([Ext.apply({}, _args, defaults)]);
    }
});

用法

Ext.define('App.view.Grid', {
    columns: [
        { text: 'inline column1' },
        { name: 'reusable1'      },
        { name: 'reusable2'      },
        { text: 'inline column2' },
    ]
});

优势

  • 在项目结构中整理,而不是存在于全局范围内。
  • 避免潜在的依赖性问题,因为 Sencha CMD 将确保在声明任何网格之前覆盖(并通过扩展这些默认值)存在。
  • 命名配置更灵活,可以内联巧妙地覆盖。
    例如 { name: 'reusable', flex: 2/*取代值 */

缺点

  • xtype 不能用作默认配置的一部分,除了常规网格列之外,仍然需要内联指定它。
    例如 { xtype: 'datecolumn', name: 'some-defaults' }

» Fiddle

关于extjs - 重用部分配置有哪些好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39130670/

相关文章:

extjs - Ext JS树,在扩展根节点之前,childNodes为空(加载完整树结构)

javascript - 如何在选项卡切换之间保持 Ext.Panel 滚动条位置

javascript - 如何隐藏 Extjs 按钮中的菜单箭头

extjs - 如何迭代 ExtJS 应用程序中定义的所有类

javascript - Ajax 异步 - 如何避免函数在完成请求之前返回

javascript - 如何在 extjs6 中将文本字段与组合框值绑定(bind)?

javascript - 如何禁用 Extjs 6.0.0 的节点。树列表?

javascript - Ext JS 可以为拖放/调整 UI 大小进行对齐网格吗?

javascript - 如何从 ExtJS TableStore 中的表格单元格获取渲染值

javascript - maskRe ExtJS 6.0.2