0

我有一个带有自定义 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);
  },
  ...
});
4

1 回答 1

1

autoLoadstore 的属性设置为false,然后手动加载。

于 2013-05-12T04:11:35.860 回答