Le chargement dynamique de liste dans le sencha touch 2

J'ai un Sencha Touch 2.0 application qui est mis en place avec une carte de mise en page. Il contient un tableau de bord avec des icônes, l'utilisateur peut cliquer sur et une liste de clients (xtype: 'liste'). Lorsque l'application est chargée, je charge toutes les "cartes" dans l'application, y compris la Liste des Clients, mais je n'ai pas charger les données (via un proxy), sauf si une localStorage variable est définie. Après, tout est chargé de vérifier si l'utilisateur doit être connecté automatiquement en cochant la localStorage variable. Si elles sont automatiquement enregistrées dans mon appli fonctionne parfaitement. Si elles ne sont pas je leur montre la "connexion" de la carte, qui est essentiellement un formulaire de connexion. Une fois qu'ils soumettre ce formulaire d'identification-je effectuer un appel ajax. Si cela revient bien, je les envoyer au "tableau de bord" de la carte. Mais avant cela, je suis en train de charger la liste des clients par le biais d'un appel ajax à l'aide de:

var tmpId = { id: example.id };

var cListStore = Ext.create('example.store.CustomerList');
cListStore.getProxy().setExtraParams(tmpid);
cListStore.load();

Avec le code ci-dessus, je peux voir que mon proxy appel qui se passe, et je peux voir que la réponse est correcte. Cependant, quand je vois le tableau de bord, et que je clique sur les Clients de l'icône-je voir une liste vide. Ma barre d'outils est là et même le indexBar sur ma liste est là, tout simplement pas de données. Je ne suis pas sûr de ce que je fais mal ici. Je joins à ma liste afficher, de stocker et de modèle ci-dessous, j'espère que ça aidera quelqu'un qui ressemble à ceci:

Ext.define('example.view.CustomerList', {
    extend: 'Ext.Container',
    id: 'customerListContainer',
    xtype: 'customerlist',
    config: {
        layout: 'fit',
        items: [{
            xtype: 'toolbar',
            docked: 'top',
            title: 'Customers',
            items: [{
                xtype: 'button',
                text: 'Home',
                id: 'customerListHomeButton',
                ui: 'back'
            }]
        }, {
            xtype: 'list',
            itemTpl: '<div class="contact">{first_name} <strong>{last_name}</strong>  </div>',
            store: 'CustomerList',
            id: 'customer_list',
            grouped: true,
            indexBar: true
        }]
    }
});

Ext.define('example.store.CustomerList', {
    extend: 'Ext.data.Store',
    id: 'customerListStore',
    requires: ['example.model.CustomerList'],
    config: {
        model: 'example.model.CustomerList',
        sorters: 'last_name',
        /*
         * This actually makes the ajax request
         */
        proxy: {
            type: 'ajax',
            url: '/example/api/customerList.php',
            extraParams: {
                id: example.id
            },
            reader: {
                type: 'json'
            }
        },
        autoLoad: ((example.id > 0) ? true : false), //only fetch the data if we have a id, or else we'll get an error from our api

        /*
         * Set the group headers to the first letter of the last name
         */
        grouper: {
            groupFn: function (record) {
                return record.get('last_name')[0];
            }
        }
    }
});

Ext.define('example.model.CustomerList', {
    extend: 'Ext.data.Model',
    config: {
        /*
         * Define the fields we get back from our ajax request
         */
        fields: [
            'first_name',
            'last_name',
            'address1',
            'address2',
            'city',
            'state',
            'zip_code',
            'phone_daytime',
            'phone_evening',
            'phone_cell',
            'email']
    }
});

J'ai aussi essayé de mettre un storeId dans la Liste des Clients du magasin et ensuite utiliser le code suivant au lieu d'appeler Ext.create():

Ext.StoreManager.get('storeid').load()

Ce produit les mêmes résultats. J'ai pu voir que le proxy a été récupérer les données correctement, mais il était encore rendu dans ma liste de composants.

OriginalL'auteur jb1785 | 2012-02-17