【问题标题】:Creating and theming ExtJS 6 component创建和主题化 ExtJS 6 组件
【发布时间】:2016-02-29 11:36:20
【问题描述】:

我正在尝试为我的 ExtJS 应用程序创建一个自定义组件(使用 extjs 6.0 和现代工具包)

我已经生成了一个新的应用程序并添加了一个新的视图(扩展 Ext.Component),在那里放置了一些逻辑。我可以用 xtype 创建这个组件,但被主题卡住了。

所以问题是:如何正确添加新组件(在框架源代码内/作为应用程序中的视图/其他地方)以及将组件放在哪里(生成自定义主题并将其插入那里/其他地方)?

组件(位于 app/view/components 文件夹中):

Ext.define("WebTest.view.components.IconButton", {
extend: 'Ext.Component',
xtype: 'iconbutton',

cachedConfig: {
    pressedCls: Ext.baseCSSPrefix + 'iconbutton-pressing',
    iconCls: null
},

config: {
    handler: null,
    scope: null,
    baseCls: Ext.baseCSSPrefix + 'iconbutton' + ' ' + Ext.baseCSSPrefix + 'iconalign-center'
},

template: [
    {
        tag: 'span',
        className: Ext.baseCSSPrefix + 'iconbutton-icon',
        reference: 'iconElement'
    }
],
............

添加:

我尝试了添加组件和主题的不同方法(目标是更改标准 CSS 并添加自定义)。

(对我而言)可接受的方式是将自定义组件放入ux.button folder(如@Alexander 所述)并生成一个新的主题。由于使用了两个(在我的情况下)不同的命名空间,因此需要在主题 package.json 中清除 namespace 参数。这提供了向 src\MyAppNs\...\MyComponentClassName.scss 添加自定义样式并添加或覆盖标准组件(即 var\Ext\Component.scss)的机会

也尝试使用workspace,但这种方式更适合在多个应用程序之间共享组件和主题。在这种情况下,可以将组件添加为一个包(如第一种方式中的主题)。

最后,尝试将自定义组件添加到框架源,但注意到 SenchaCMD 不支持这种方式。想想,这是不可接受的。

【问题讨论】:

    标签: extjs extjs6 extjs6-modern


    【解决方案1】:

    是否要在Ext<YourAppNamespace> 下添加组件取决于您。您甚至可以为您的自定义组件库创建一个特殊的 lib 命名空间。

    我建议将组件命名为<Namespace>.ux.button.IconButton

    <YourAppNamespace>.ux.button.IconButton 的样式进入sass/src/ux/button/IconButton.sassExt.ux.button.IconButton 的样式进入ext/modern/your-selected-theme/sass/src/ux/button/IconButton.sass

    我还没有尝试使用 lib 命名空间,也不知道将 CSS 放在哪里。

    【讨论】:

    • 感谢您的回复。我已经用一些研究结果更新了这个问题。你的回答对我有帮助。
    猜你喜欢
    • 1970-01-01
    • 2013-08-12
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-30
    相关资源
    最近更新 更多