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。我仍然无法理解来自同一家公司的这两个框架为何如此不同。至少核心应该匹配。