Extjs store.load没有拨打电话

时间:2013-07-02 23:06:59

标签: javascript ajax extjs

我有代码ExtJs 4:

var proxy = Ext.create('Ext.data.Proxy',  {
type : 'ajax',
    url : 'some url',
    reader : {
        type : 'json'
    }
});
myStore.setProxy(proxy);  
myStore.load({   // this never loads, no error in console either
    scope : this,
    params : {
    },
    callback: function() {
    }
});

2 个答案:

答案 0 :(得分:4)

您的问题是您在创建超类的具体实例时尝试定义type。当您在像type这样的类的配置中定义代理时,Ext.data.Model是一个有效的配置(在大多数情况下这是推荐的方式!)以下是一个如何完成的示例:< / p>

Ext.define('User', {
    extend: 'Ext.data.Model',
    fields: ['id', 'name', 'email']
});

//The Store contains the AjaxProxy as an inline configuration
var store = Ext.create('Ext.data.Store', {
    model: 'User',
    proxy: {
        type: 'ajax',
        url : 'users.json'
    }
});

store.load();

商店现在将使用应用的type属性实例化代理,在本例中为ajax。上面的代理行与

相同
new Ext.data.proxy.Ajax({
    url: 'users.json',
    model: 'User',
    reader: 'json'
});

所以type是有效的属性,只要您在使用Ext.data.ModelExt.data.Store

等代理的类的配置中使用它

如果您需要自己创建代理实例,则需要创建具体实例。超类在API

中记录了他们的直接子类

enter image description here

但是如果读者没有帮助,因为您只找到Server&amp; Client但它们列在课程说明部分Types of Proxy

  

代理类型

     

代理有两种主要类型 - 客户端和服务器。客户端   代理在本地保存数据并包含以下子类:

     
      
  • LocalStorageProxy - 如果是浏览器,则将其数据保存到localStorage   支持它
  •   
  • SessionStorageProxy - 将其数据保存到sessionStorage if   浏览器支持它
  •   
  • MemoryProxy - 仅保存内存中的数据   刷新页面时数据丢失
  •   
     

服务器代理保存他们的   数据通过向某个远程服务器发送请求。这些代理包括:

     
      
  • Ajax - 将请求发送到同一域的服务器
  •   
  • JsonP - 使用JSON-P向不同域的服务器发送请求
  •   
  • Rest - 使用RESTful HTTP方法(GET / PUT / POST / DELETE)与服务器通信
  •   
  • Direct - 使用Ext.direct.Manager发送请求
  •   
     

代理的工作原理是所有执行的操作都是Create,Read,   更新或删除。这四个操作映射到方法   分别创建,读取,更新和销毁。每个代理子类   实现这些功能。

     

CRUD方法都希望将Operation对象作为唯一参数。   操作封装了有关Store的操作的信息   希望执行,要修改的模型实例等。   有关详细信息,请参阅操作文档。每种CRUD方法   还接受异步调用的回调函数   完成。

     

代理还支持通过批处理对象批处理操作,   由批处理方法调用。

     

自:1.1.0起可用

答案 1 :(得分:2)

我尝试了你的代码并获得了你描述的相同结果:没有控制台错误,但也没有加载。根据我的看法,type不是ExtJS 4.x中Proxy的配置选项,但您可以直接实例化Ext.data.proxy.Ajax。这对我有用:

var proxy = Ext.create('Ext.data.proxy.Ajax',  {
    url : 'some url',
    reader : {
        type : 'json'
    }
});