列表未在sencha touch中的面板中加载

时间:2013-07-26 10:13:58

标签: javascript extjs sencha-touch-2.1

我正在尝试在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' }
        ]
    }
});

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

1 个答案:

答案 0 :(得分:0)

xtypes别名定义为widget

所以你需要定义它们:

alias:'widget.profilecontainer',

alias:'widget.profilelist',

有关requireuses的一些信息:

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

依赖关系是您使用requireuses的原因之一,其中require可以作为 strict 进行威胁,因为它确保该类存在于一旦得到需要

  

这就产生了不同之处:因为如果您懒得加载,这是无效的。此时所需的课程将在之后提供   类是定义的。构建工具清除了所需的位置   类定义之前的类

虽然可以将uses视为 lost ,因为它只会确保在调用Ext.onReady时该类存在。

通常情况下这不会给你带来麻烦但是如果类定义要求在定义时解析依赖关系,那么当加载花边时它会爆炸。如果现在是导致此问题的依赖项(xtype),您可以尝试使用

手动加载它
Ext.require('class'); 

需要在类定义之前放置。