1

我在我的模型上定义了一个代理。

我定义了一个指向模型的商店,没有代理,因为我希望它使用模型上定义的商店。

store.autoLoad: 真的不行

我必须从我的控制器显式调用

var store = this.getMyStore();
store.load();

这是预期的行为吗?

  1. 这不是自动加载的目的吗?
  2. 仅当在商店中定义代理时才有效?

代码:

模型/MyThing.js

Ext.define('MyApp.model.MyThing', {

  extend: 'Ext.data.Model',

  fields: ['id', 'reference'],

  proxy:
  {
    type: 'ajax',
    url: 'MyThings'
  }
});

商店/MyThings.js

Ext.define('MyApp.store.MyThings', {
  extend: 'Ext.data.Store',
  autoLoad: true,
  autoSync: false,
  model: 'MyApp.model.MyThing'
});
4

2 回答 2

2

你没有展示你是如何创建商店的。调用后,您应该会在 FireBug 中看到一个 HTTP GET 请求(假设您正在使用 FireFox 并拥有它):

Ext.create('MyApp.store.MyThings');

我将您的代码添加到我的应用程序并获得了预期的结果,所以它应该可以工作。

更新:

为了响应您自己发布的答案,您可以将该配置对象提供为autoLoad(而不是autoLoad: true)以获得相同的功能,而无需显式调用store.load()

于 2012-07-11T15:20:14.243 回答
0

实际上,这有点像新手。我一直是一个急切的海狸。

我在商店完成加载之前正在查看它(因为它是异步的)。

最佳实践是订阅 load() 函数的回调,然后做一些事情......

store.load({
    scope   : this,
    callback: function(records, operation, success) {
        //the operation object contains all of the details of the load operation
        console.log(records);
    }
});
于 2012-07-12T07:51:29.910 回答