Sencha Touch 2代理不会触发任何请求

时间:2014-05-01 05:20:12

标签: ajax extjs

我正在尝试从代理中加载一个列表,该代理使用rest从服务器获取数据。我无法弄清楚我做错了什么,但我没有在Chrome的网络通话记录中看到任何GET请求/餐馆。最初我想也许控制器没有被包括在内,但它就在那里,当我在商店中添加数据时它会填充。这不会抛出任何错误,所以我无法调试它。我已经完成了我能找到的每一个可能的教程以及文档。非常感谢任何帮助或见解。

控制器:

Ext.define('Appetize.controller.Restaurants', {
  extend: 'Ext.app.Controller',

  config: {
    models: ['Restaurant'],
    views:  [
      'RestaurantList',
    ],
    refs: {
    },
    control: { }
 }
}

型号:

Ext.define('Appetize.model.Restaurant', {
  extend: 'Ext.data.Model',

  config: {
    fields: [
      {name: 'id'},
      {name: 'name'},
      {name: 'delivers'},
      {name: 'active'}
    ]
  }
});

存储

Ext.define('Appetize.store.Restaurants', {
  extend: 'Ext.data.Store',
  requires: ['Appetize.model.Restaurant'],
  config: {
    model: 'Appetize.model.Restaurant',
    proxy: {
        type: 'rest',
        url: '/restaurants',
        autoLoad: 'true'
    } 
 }
});

查看:

Ext.define('Appetize.view.RestaurantList', {
  extend: 'Ext.List',
  xtype: 'restaurantListCard', 
  config: {
    iconCls:          'home',
    title:            'Restaurants',
    id:               'restaurantList',
    store:            'Restaurants',
    onItemDisclosure: true,
    itemTpl:          '{name}'
  }
});

1 个答案:

答案 0 :(得分:2)

事实证明我在错误的地方使用了autoLoad。它不应该在代理设置中。相反,它应该在代理之外作为配置的一部分。

Ext.define('Appetize.store.Restaurants', {
  extend: 'Ext.data.Store',
  requires: ['Appetize.model.Restaurant'],
  config: {
    model: 'Appetize.model.Restaurant',
    proxy: {
        type: 'rest',
        url: '/restaurants',
    },
    autoLoad: 'true' 
 }
});