我正在尝试在List
中加载Panel
,但我收到了以下错误
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' }
]
}
});
但是我的列表没有加载到面板中,我得到上面提到的错误
答案 0 :(得分:0)
xtypes别名定义为widget
所以你需要定义它们:
alias:'widget.profilecontainer',
或
alias:'widget.profilelist',
有关require
和uses
的一些信息:
您的类之间存在需要解决的依赖关系。这通常由buildtool完成,或者如果您不自己运行它。
依赖关系是您使用require
或uses
的原因之一,其中require
可以作为 strict 进行威胁,因为它确保该类存在于一旦得到需要
这就产生了不同之处:因为如果您懒得加载,这是无效的。此时所需的课程将在之后提供 类是定义的。构建工具清除了所需的位置 类定义之前的类
虽然可以将uses
视为 lost ,因为它只会确保在调用Ext.onReady
时该类存在。
通常情况下这不会给你带来麻烦但是如果类定义要求在定义时解析依赖关系,那么当加载花边时它会爆炸。如果现在是导致此问题的依赖项(xtype),您可以尝试使用
手动加载它Ext.require('class');
需要在类定义之前放置。