0
Ext.define('GoogleMarkerModel', {
        extend: 'Ext.data.Model',
        fields: [
        {name: 'ID',    type: 'int'},
        {name: 'Locating',    type: 'int'},
        {name: 'MainPower',    type: 'int'},
        {name: 'Acc',    type: 'int'},
        {name: 'PowerOff',    type: 'int'},
        {name: 'Alarm',    type: 'int'},
        {name: 'Speed',    type: 'int'},
        {name: 'Direction',    type: 'int'},
        {name: 'Latitude',    type: 'float'},
        {name: 'Longitude',    type: 'float'},
        {name: 'DateTime',    type: 'date'},
        {name: 'MainID',    type: 'int'},
        {name: 'IOState',    type: 'int'},
        {name: 'OilState',    type: 'int'}]
    });

    var MarkerStore = Ext.create('Ext.data.JsonStore', {
        model: 'GoogleMarkerModel',
        autoLoad: true,
        proxy: {
            type: 'ajax',
            url: 'get-googlemarker.php',
            baseParams: {  //here you can define params you want to be sent on each request from this store
                        mainid: 'value1'
                        },
            reader: {
                type: 'json',
                idProperty:'MainID',
            }

        }
    });

このコードは、MarkerStoreを呼び出し、値1のパラメーターmainidを渡すために使用します

MarkerStore.load({
                        params: {  //here you can define params on 'per request' basis
                                mainid: 1,
                                }
                        })

Webブラウザを使用してget-googlemarker.phpとmainid=1を使用すると、これらの値が返されます

http://localhost/GPS/examples/tabs/get-googlemarker.php?mainid=1

[{"ID":"1808","Locating":"1","MainPower":"0","Acc":"1","PowerOff":"1","Alarm":"128","Speed":"0","Direction":"293","Latitude":"5.391788482666016","Longitude":"100.29693603515625","DateTime":"2013-02-19 15:44:36","MainID":"1","IOState":"0","OilState":"0"}]

しかし、すべてのデータを一覧表示しようとしています。残念ながら、JSONストアはnullです。データがMarkerStoreに格納されていない可能性があります。以下のコードは、データを一覧表示しようとしていますが、コンソールFireBugには何も書き込まれません。

MarkerStore.each( function (model) {
    console.log( model.get('MainID') ); 
    }); 

何か案が?

4

3 に答える 3

0

autoload = trueストアからプロパティを削除してみてください。

于 2013-02-27T08:17:30.340 に答える
0

コードは機能しますが、主な問題はMarkerStoreを呼び出すときです。この時点では、各ストアは空です(Ajaxは非同期です)。スクリプトは、データを使用したajaxよりも高速です。次の単純なスニペットを使用すると、「mainID」が表示されます。

setTimeout(function(){
        MarkerStore.each( function (model) {
                console.log( model.get('MainID') );
        });     
    }, 1500, MarkerStore);
于 2013-03-03T10:50:08.197 に答える
0
MarkerStore.on('load', function(store, records) {
    for (var i = 0; i < records.length; i++) {
    console.log(records[i].get('Latitude'));
    lati = records[i].get('Latitude'); 
    };
});

このコードを使用する必要があります。その後、コンソールにデータを出力します。上記の質問の印刷ストアのデータコードは間違っています。実際には、データはJSONストアに正常に保存されます。

于 2013-02-28T13:12:22.653 に答える