我有一个带有自定义 JSON 阅读器的 Ext/Sencha 商店代理。我注意到阅读器(因此,代理)在使用之前就被调用了。应用程序启动过程是这样的:
- 获取地理位置
- 将其存储为全局变量(命名空间)
- 进行 AJAX 调用
- 然后创建主视图
问题
我希望在添加主视图(添加使用商店的列表)之前不调用代理。但是,如果读者经常访问在第二步中设置的全局地理变量,则它为空。
我该如何解决这个问题?只能在确定地理位置后调用代理。
app.js 代码片段
Ext.application({
models: ['Station'],
stores: ['Stations'],
views: ['Main'],
controllers: ['Application'],
launch: function () {
Ext.create('Ext.util.Geolocation', {
...
listeners: {
locationupdate: function (geo) {
// store lat/long as global variables
Ext.Ajax.request({
...
success: function (response) {
...
Ext.fly('appLoadingIndicator').destroy();
Ext.Viewport.add(Ext.create('APP.view.Main'));
}
...
}).updateLocation();
应用/商店/Stations.js
Ext.define('SunApp.store.Stations', {
extend: 'Ext.data.Store',
requires: ['SunApp.store.StationReader'],
config: {
autoLoad: true,
...
proxy: {
...
reader: {
type: 'stationReader'
}
}
}
});
应用/商店/StationReader.js
Ext.define('SunApp.store.StationReader', {
extend: 'Ext.data.reader.Json',
alias: 'reader.stationReader',
getResponseData: function (response) {
var data = this.callParent([response]);
return this.filter(data);
},
...
});