1

地理的な場所への依存度が高いアプリケーションを作成しています。app.jsに地理座標で設定された変数「GeoApp.app.geoLat」と「GeoApp.app.geoLong」があります。

いずれかのビュー内でconsole.outを実行すると、値へのアクセスと出力に問題はありません。ストア内では、アクセス権がないか、変数が定義されていないか存在していないかのように、値は空です。

私がやろうとしていることを達成するためのベストプラクティスは何ですか?

Ext.define('GeoApp.store.Places', {
    extend:'Ext.data.Store',

    config: {
        model:'GeoApp.model.Place',
        autoLoad:'true',
        proxy: {
            type:'ajax',
            url:'googleapiurl/json?location=' + GeoApp.app.geoLat + ','+ GeoApp.app.geoLong + '&radius=500...',
            reader: {
                type:'json',
                rootProperty:'results'
            }
        }*/
    }
})
4

2 に答える 2

1

これは、アプリの起動時にストアが作成され、URL文字列も作成されるためです。したがって、アプリGeoApp.app.geoLatGeoApp.app.geoLong起動したときにnullまたは未定義であるため、URLには表示されません。

私がすることは、URLをに設定してから、次のようにプロキシのとしてパラメータをgoogleapiurl/json?radiu=500...追加することです。locationextraParam

Ext.getStore('Places').getProxy().setExtraParams({
  location: GeoApp.app.geoLat + ',' + GeoApp.app.geoLong
});

これがお役に立てば幸いです

于 2012-11-20T20:49:52.917 に答える
0

できることは、ストアをロードする前にプロキシURLを設定することです。そのため、に設定autoLoadする必要がありますfalse。たとえば、show()ビューコンポーネントの関数で、以下のコードを使用できます。

show: function(component, options){
    var store = Ext.getStore('Places');

    store.setProxy({
       url:'googleapiurl/json?location=' + GeoApp.app.geoLat + ','+ GeoApp.app.geoLong + '&radius=500...',
    });

    store.load();
}

幸運を!

于 2012-11-20T21:26:48.273 に答える