0

我正在尝试加载 aListPanel出现以下错误

Uncaught TypeError: Cannot call method 'substring' of undefined 

这是我的ProfileContainer.js,其中包含List

Ext.define('demo.view.ProfileContainer', {
    extend: 'Ext.Panel',
    xtype: 'profilecontainer',
   // requires: [ 'Ext.TitleBar', 'demo.view.ProfileList' ],
    requires: [ 'Ext.TitleBar' ],
    config: {
        items: [{
            xtype: 'titlebar',
            title: 'demo',
            cls: 'bms-bg'
        }, {
            xtype: 'profilelist'
        }]
    }
});

这是代码ProfileList.js

Ext.define('demo.view.ProfileList', {
    extend: 'Ext.dataview.List',
    alias: 'widget.profilelist',
    requires: ['demo.store.ProfileStore'],
    config: {
        store: 'ProfileStore',
        itemTpl: '{name}',
    }
});

这是我的ProfileStore.js

Ext.define('demo.store.ProfileStore',{

    extend:'Ext.data.Store',

    config: {
        model: 'demo.model.ProfileModel',
        data:[

            { name: 'John Rambo' },
            { name: 'Brad Pitt'}

        ]
    }
});

ProfileModel.js

Ext.define('demo.model.ProfileModel', {
    extend: 'Ext.data.Model',
    config: {
        fields: [

            { name: 'name', type: 'string' }
        ]
    }
});

但是我的列表没有加载到面板中,并且出现了上述错误

4

1 回答 1

0

xtypes 的别名定义为widget

所以你需要像这样定义它们:

alias:'widget.profilecontainer',

或者

alias:'widget.profilelist',

require关于和的一些信息uses

您的类之间存在依赖关系,需要解决。这通常由构建工具完成,或者如果您不自己运行它。

依赖项是您使用的原因之一,require或者uses在哪里require可能会受到严格的威胁,因为它确保类在需要时立即存在

这里有一个区别:因为如果您延迟加载,这将无效。这时候需要的类在类被定义后就可以使用了。构建工具清理这个在类定义之前放置所需的类

whileuses可以被视为丢失,因为它只确保类在Ext.onReady被调用时存在。

通常这不会让你头疼,但如果类定义要求在定义时解决依赖关系,它会在加载花边时爆炸。如果您现在是导致此问题的依赖项(xtype),您可以尝试使用手动加载它

Ext.require('class'); 

这需要放在类定义之前。

于 2013-07-26T10:41:28.660 回答