Extjs store.load不进行调用

fas*_*ava 4 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() {
    }
});
Run Code Online (Sandbox Code Playgroud)

sra*_*sra 5

您的问题是您试图type在创建超类的具体实例时定义一个。type在类之类的配置中定义代理时,它是有效的配置Ext.data.Model(在大多数情况下,这是推荐的方法!)以下是应如何执行的示例:

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();
Run Code Online (Sandbox Code Playgroud)

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

new Ext.data.proxy.Ajax({
    url: 'users.json',
    model: 'User',
    reader: 'json'
});
Run Code Online (Sandbox Code Playgroud)

所以type是一个有效的属性,只要你消耗代理等类配置使用它Ext.data.ModelExt.data.Store

而且,如果您需要自己创建代理实例,则需要创建具体实例。超类已在API中记录了其直接子类

在此处输入图片说明

但对于读者却无济于事的情况,因为您只能找到Server&,Client但它们在类描述部分列出Types of Proxy

代理类型

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

  • LocalStorageProxy-如果浏览器支持,则将其数据保存到localStorage
  • SessionStorageProxy-如果浏览器支持的话,将其数据保存到sessionStorage
  • MemoryProxy-仅在内存中保存数据,刷新页面时所有数据都会丢失

服务器代理通过将请求发送到某个远程服务器来保存其数据。这些代理包括:

  • Ajax-将请求发送到同一域中的服务器
  • JsonP-使用JSON-P将请求发送到其他域上的服务器
  • 休息-使用RESTful HTTP方法(GET / PUT / POST / DELETE)与服务器通信
  • 直接-使用Ext.direct.Manager发送请求

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

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

代理还支持通过批处理对象(由batch方法调用)对操作进行批处理。

自1.1.0起可用