Javascript Sencha touch 2存储动态代理Url

Javascript Sencha touch 2存储动态代理Url,javascript,sencha-touch-2,Javascript,Sencha Touch 2,我正在创建一个高度依赖地理位置的应用程序。我在app.js中有变量“GeoApp.app.geoLat”和GeoApp.app.geoLong”,它们都是用地理坐标设置的 如果我在任何视图中使用console.out,那么访问和输出值都没有问题。在存储中,值是空的,就好像它没有访问权限,或者变量没有定义或存在一样 实现我的目标的最佳实践是什么 Ext.define('GeoApp.store.Places', { extend:'Ext.data.Store', config:

我正在创建一个高度依赖地理位置的应用程序。我在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'
            }
        }*/
    }
})

这是因为应用程序启动时会创建应用商店,url字符串也是如此。因此,
GeoApp.app.geoLat
GeoApp.app.geoLong
在启动应用程序时为空或未定义,它们不会出现在url中

我要做的是将url设置为
googleapiurl/json?radiu=500…
,然后添加
location
参数作为代理的
extraParam
,如下所示:

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

希望这对你有所帮助,因为你的商店是在你的应用程序启动时创建的,你的url字符串也是。因此,
GeoApp.app.geoLat
GeoApp.app.geoLong
在启动应用程序时为空或未定义,它们不会出现在url中

我要做的是将url设置为
googleapiurl/json?radiu=500…
,然后添加
location
参数作为代理的
extraParam
,如下所示:

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

希望这对您有所帮助

您可以在加载存储之前设置代理url。因此,您必须将
自动加载
设置为
错误
。例如,您可以在视图组件的
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();
}

祝你好运

您可以做的是在加载存储之前设置代理url。因此,您必须将
自动加载
设置为
错误
。例如,您可以在视图组件的
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();
}

祝你好运

那么您将如何访问代理url中的额外参数位置?我不明白。您希望在哪里访问额外参数?一旦你设置好了,客户端就没有什么可做的了。那么你如何访问代理url中的额外参数位置呢?我不明白。您希望在哪里访问额外参数?一旦设置好了,客户端就没有什么可做的了。这实际上改变了整个代理,而不仅仅是url。最好执行store.getProxy().setUrl(URL)这实际上改变了整个代理,而不仅仅是URL。最好执行store.getProxy().setUrl(URL)