创建和主题化ExtJS 6组件

时间:2015-11-26 11:29:55

标签: extjs extjs6 extjs6-modern

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

我已经生成了一个新的应用程序并添加了一个新的View(扩展Ext.Component),在那里放了一些逻辑。我能够用xtype创建这个组件,但是仍然坚持使用主题。

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

组件(位于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

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

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

1 个答案:

答案 0 :(得分: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。