Javascript 列表isn';在sencha touch的面板中加载t

Javascript 列表isn';在sencha touch的面板中加载t,javascript,extjs,sencha-touch-2.1,Javascript,Extjs,Sencha Touch 2.1,我试图在面板中加载列表,但出现以下错误 Uncaught TypeError: Cannot call method 'substring' of undefined 这是我的ProfileContainer.js,其中包含列表 Ext.define('demo.view.ProfileContainer', { extend: 'Ext.Panel', xtype: 'profilecontainer', // requires: [ 'Ext.TitleBar',

我试图在
面板中加载
列表
,但出现以下错误

Uncaught TypeError: Cannot call method 'substring' of undefined 
这是我的
ProfileContainer.js
,其中包含
列表

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'}

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

            { name: 'name', type: 'string' }
        ]
    }
});
ProfileModel.js

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

    extend:'Ext.data.Store',

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

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

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

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

但是我的列表并没有加载到面板中,我得到了上面提到的错误

x类型被定义为
小部件

因此,您需要对它们进行如下定义:

alias:'widget.profilecontainer',


有关
需要
使用
的一些信息:

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

依赖关系是使用
require
uses
的原因之一,其中
require
可以被视为严格的,因为它确保类在需要时立即存在

这里有一个区别:因为如果您延迟加载,这是无效的。此时,所需的课程将在课程结束后提供 类被定义。构建工具会清理这些内容,并放置所需的 类定义之前的类

uses
可以被视为lose,因为它只确保类在调用
Ext.onReady
时存在

通常,这个wan不会让您头疼,但是如果类定义要求在定义时解决依赖关系,那么在加载lacy时,它就会崩溃。如果您现在已找到导致此问题的依赖项(xtype),则可以尝试使用手动加载它

Ext.require('class'); 

需要放在类定义之前。

我已经在
profilelist.js
中定义了
别名:'widget.profilelist'
,并且在
ProfileContainer.js
中使用它作为
xtype:'profilelist'
但仍然得到相同的结果error@Hunt请用新的代码片段扩展您的问题。@sra实际上所有ST2中需要的是
xtype:“我的xtype”
,它的工作原理与extjs4中的
别名:“widget.my xtype”
相同。我已经更改了代码,但正如我所说的,如果我使用xtype或别名,它的加载不会给我相同的结果error@kevhender谢谢你的提示。我不太习惯ST。我仍然无法理解来自同一家公司的这两个框架为何如此不同。至少核心应该匹配。