Andreas Hagen
Andreas Hagen

Reputation: 2325

Sencha Touch, StoreManager is undefined

I just stated a new project in Sencha Touch 2.2.1 from the SenchaCmd. Since this is my first Sencha project I am having problems with some pretty basic stuff. I'm trying to access Ext.data.StoreManager to load a predefined store but Ext.data.StoreManager is undefined, as in it seams like the loader have not loaded this file. I have tried to fix it by adding Ext.require('Ext.data.StoreManager'); but no luck.

The project is mostly what SenchaCmd initialized with the addition of a model, a store and some changes to app/views/Main.js.

Any ideas?

Below is my Main.js:

Ext.define('DRL.view.Main', {
    extend: 'Ext.dataview.List',
    xtype: 'main',
    requires: [
        'Ext.data.Store'
    ],
    config: {
        items: [{
            xtype: 'list',
            itemTpl: '{teamName}',
            store: Ext.data.StoreManager.lookup('teams')
        }],
        listeners: {
            itemtap: function(self, index, target, record, e, eOpts) {

            }
        }
    }
});

Upvotes: 0

Views: 639

Answers (1)

Ye Liu
Ye Liu

Reputation: 8976

Ext.require loads files asynchronously, as well as the requires block. If you want StoreManager to be loaded before Ext.define, you should use Ext.syncRequire before the class definition.

However, there is are better and cleaner ways to achieve the same end result. For example:

app/store/TeamStore.js:

Ext.define('DRL.store.TeamStore', {
    extend: 'Ext.data.Store',
    model: 'DRL.model.Team' // change your model
    ...
});

app/store/Main.js

Ext.define('DRL.view.Main', {
    ...
    store: 'DRL.store.TeamStore'
    ...
});

Then, add the DRL.store.TeamStore and DRL.view.Main to your Ext.application which should be in app.js.

Upvotes: 1

Related Questions