1

私はこのように私のモデルを持っています:

Ext.define("NotesApp.model.Note", {
    extend: "Ext.data.Model",
    config: {
        idProperty: 'id',
        fields: [
            { name: 'id', type: 'int' },
            { name: 'dateCreated', type: 'date', dateFormat: 'c' },
            { name: 'question', type: 'string' },
            { name: 'answer', type: 'string' },
            { name: 'type', type: 'int'},
            { name: 'author', type: 'int'}
        ],
        validations: [
            { type: 'presence', field: 'id' },
            { type: 'presence', field: 'dateCreated' },
            { type: 'presence', field: 'question', message: 'Please enter a question for this card.' }
        ]
    }
});

そして私のサーバーページ(qa.php)はこれを出力します:

{"results":[{"id":"1","dateCreated":"2012-05-01","question":"asdf?","answer":"fdsa","type":"0","author":"0"},{"id":"2","dateCreated":"2012-05-01","question":"qwer?","answer":"rewq","type":"0","author":"0"}]}

これはストア内の私のコードです:

Ext.define("NotesApp.store.Online", {
    extend: "Ext.data.Store",
           config: {
           model: 'NotesApp.model.Note',
           storeId: 'Online',
           proxy: {
               type: 'jsonp',
               url: 'http://xxxxxxxx.com/qa.php',
               reader: {
                   type: 'json',
                   rootProperty: 'results'
               }
           },
           autoLoad: false,
           listeners: {
               load: function() {   
                   console.log("updating");

                   Ext.getStore('Notes').getProxy().clear();
                   console.log("updating1");

                   // Loop through records and fill the offline store                       

                   this.each(function(record) {
                             console.log("updating2");
                             Ext.getStore('Notes').add(record.data);

                   });

                   // Sync the offline store
                   Ext.getStore('Notes').sync();
                   console.log("updating3");
                   // Remove data from online store
                   this.removeAll();
                    console.log("updated");
               }

           },
           fields: [
                    {
                    name: 'id'
                    },
                    {
                    name: 'dateCreated'
                    },
                    {
                    name: 'question'
                    },
                    {
                    name: 'answer'
                    },
                    {
                    name: 'type'                    
                    },
                    {
                    name: 'author'
                    }
                    ]
           }
});

しかし、私が電話したときExt.getStore('Online').load()、コンソールには「updating」、「updating1」、「updating3」が表示されましたが、「updating2」は表示されませんでした。レコードが見つかりませんでした。間違いはどこにあるのだろうか?読み込まれたjsonstringを出力する方法はありますか?

4

1 に答える 1

0

これは別のスコープです

listeners: {
           load: function() {   
               console.log("updating");

               Ext.getStore('Notes').getProxy().clear();
               console.log("updating1");

               // Loop through records and fill the offline store                       

               this.each(function(record) {
                         console.log("updating2");
                         Ext.getStore('Notes').add(record.data);

               });

               // Sync the offline store
               Ext.getStore('Notes').sync();
               console.log("updating3");
               // Remove data from online store
               this.removeAll();
                console.log("updated");
           },
this//adds scope

また

listeners: {
           load: function(store,record,options) {   
               console.log("updating");

               Ext.getStore('Notes').getProxy().clear();
               console.log("updating1");

               // Loop through records and fill the offline store                       

               store.each(function(record) {
                         console.log("record"); //wahei records!
                         Ext.getStore('Notes').add(record.data);

               });

               // Sync the offline store
               Ext.getStore('Notes').sync();
               console.log("updating3");
               // Remove data from online store
               this.removeAll();
                console.log("updated");
           }
于 2012-05-22T16:12:52.800 に答える