我正在创建一个对地理位置有很高依赖性的应用程序。我在app.js中使用地理坐标设置变量'GeoApp.app.geoLat'和GeoApp.app.geoLong'。
如果我在任何视图中控制台。在访问和输出值时没有问题。在商店中,值为空,就好像它没有访问权限,或者可能没有定义或存在变量。
达到我想做的最佳做法是什么?
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'
}
}*/
}
})
答案 0 :(得分:1)
这是因为您的商店是在应用启动时创建的,因此您的网址字符串也是如此。因此,当您启动应用时,GeoApp.app.geoLat
和GeoApp.app.geoLong
为空或未定义,它们不会显示在您的网址中。
我要做的是将网址设置为googleapiurl/json?radiu=500...
,然后将location
参数添加为代理的extraParam
,如下所示:
Ext.getStore('Places').getProxy().setExtraParams({
location: GeoApp.app.geoLat + ',' + GeoApp.app.geoLong
});
希望这有帮助
答案 1 :(得分: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();
}
祝你好运!