Sencha - 有条件地添加namesapce需要

时间:2017-04-14 16:21:19

标签: extjs sencha-architect

我要求我有条件地在requires添加名称空间。

e.g。在下面的示例中,我想在特定条件下添加“views.popupgrid”名称空间。目前它总是被加载。

requires: ['Ext.window.MessageBox','views.popupgrid','user.MyUser'  ]

1 个答案:

答案 0 :(得分:1)

Sencha工具链不支持条件依赖项。虽然您可以在您选择的文本编辑器中书写

requires:[
    (location.hash=='#test')?'testpopup':'normalpopup'
]

这可以在未编译的版本中运行,Sencha Cmd将无法正确编译它,并会抛出错误。

因此,Sencha Architect不支持这种语法。

您可以做什么,同时保持符合标准:您可以使用Ext.Loader.loadScript,例如像这样:

Ext.define('MyForm',{
    extend: 'Ext.form.Panel'
    initComponent:function() {
        var me = this;
        me.callParent(arguments);
        if(x==3) Ext.Loader.loadScript({
            url:'MyCustomFormComponent.js',
            onLoad:function(){
                me.add({
                    xtype:'mycustomformcomponent'
                });
            })
        });
    }
})

请注意,在这种情况下,您始终必须与缩小的MyCustomFormComponent.js一起提供app.js,因为工具链无法解决依赖关系。此外,根据连接,在加载资源并将组件添加到表单之前可能存在可见的延迟。

总是加载依赖项通常更快更顺畅,特别是如果您打算将应用程序作为单个缩小的javascript文件(例如使用Sencha Cmd)传送。