列表是't在sencha触摸面板中加载

list isn't loading in panel in sencha touch

本文关键字:触摸 加载 sencha 列表      更新时间:2023-09-26

我正试图在Panel中加载List,但收到以下错误

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' }
        ]
    }
});

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

x类型别名定义为widget

因此,您需要将它们定义为:

alias:'widget.profilecontainer',

alias:'widget.profilelist',

关于requireuses的一些信息:

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

依赖关系是使用requireuses的原因之一,其中require可以被威胁为严格,因为它确保类在获得所需后立即存在

这里有一个区别:因为如果你懒惰加载,这是无效的。此时,所需的课程将在类。构建工具将清理所需的位置类定义之前的类

而CCD_ 14可以被视为lose,因为它只确保在调用CCD_。

通常情况下,这不会让你头疼,但如果类定义要求在定义时解决依赖关系,那么当加载lacy时,它就会崩溃。如果您现在是导致这种情况的依赖项(xtype),您可以尝试使用手动加载它

Ext.require('class'); 

需要将其放置在类定义之前。