gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:12:28 25 4
gpt4 key购买 nike

例如,我有几个共享公共(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com