Sencha touch 存储需要在其自身或其代理上定义模型

Sencha touch 存储需要在其自身或其代理上定义模型,sencha-touch,sencha-touch-2,Sencha Touch,Sencha Touch 2,在控制台窗口中执行此操作时: var s = new Ext.data.Store('MyApp.store.Genders'); 我得到以下错误: 除非通过元数据定义模型,否则存储需要在其自身或其代理上定义模型 但是,我的商店实际上有一个定义在上面的模型: Ext.define('MyApp.store.Genders', { extend: 'Ext.data.Store', requires: [ 'MyApp.model.Lookup',

在控制台窗口中执行此操作时:

var s = new Ext.data.Store('MyApp.store.Genders');
我得到以下错误:

除非通过元数据定义模型,否则存储需要在其自身或其代理上定义模型

但是,我的商店实际上有一个定义在上面的模型:

Ext.define('MyApp.store.Genders', {
    extend: 'Ext.data.Store',

    requires: [
        'MyApp.model.Lookup',        
        'Ext.data.proxy.Rest'
    ],

    config: {
        autoLoad: true,
        model: 'MyApp.model.Lookup',
        storeId: 'GenderStore',
        proxy: {
            type: 'rest',            
            url : '/api/lookup/genders',
            reader: {
                type: 'json'
            }
        }
    }    
});

有什么原因导致此操作不正常吗?

我可以问一下为什么要创建新的存储对象吗?使用
Ext.define
时,从技术上讲,您已经在Sencha中创建了一个存储对象,可以用来存储所有数据。为什么需要创建

var s=

基本上,当您创建
Ext.define('StoreName',{params_with_Model})
时,您创建了一个store对象,其关联模型名为StoreName。但是,您还没有将其注册为xtype,您可以在以后创建对象(事实上,我甚至不确定您是否可以这样做)


但是,在Sencha中创建新变量s时,没有创建存储类型为“StoreName”的对象。相反,您尝试使用相同的名称创建第二个存储。这与第一个完全无关,因此Sencha希望您提供一个模型和数据,就像您通常在
Ext.define中所做的那样

我想你是对的。我当时不知道必须在app类中定义存储,然后使用Ext.getStore()引用,因为存储是单例对象。