您的问题是您试图type
在创建超类的具体实例时定义。type
当您在像 a 这样的类的配置中定义代理时,这是一个有效的配置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();
Store 现在将使用应用type
属性(在本例中为 ajax)实例化代理。上面的代理行是一样的
new Ext.data.proxy.Ajax({
url: 'users.json',
model: 'User',
reader: 'json'
});
type
只要您在使用代理的类的配置中使用它,那么它就是有效的属性Ext.data.Model
,例如Ext.data.Store
如果您需要自己创建代理实例,则需要创建具体实例。超类在API中记录了它们的直接子类
但如果读者没有帮助,因为你只找到Server
&Client
但它们列在类描述部分Types of Proxy
代理类型
代理有两种主要类型 - 客户端和服务器。客户端代理在本地保存他们的数据并包括以下子类:
- LocalStorageProxy - 如果浏览器支持,则将其数据保存到 localStorage
- SessionStorageProxy - 如果浏览器支持,则将其数据保存到 sessionStorage
- MemoryProxy - 仅将数据保存在内存中,刷新页面时任何数据都会丢失
服务器代理通过向某个远程服务器发送请求来保存它们的数据。这些代理包括:
- Ajax - 向同一域上的服务器发送请求
- JsonP - 使用 JSON-P 向不同域的服务器发送请求
- Rest - 使用 RESTful HTTP 方法 (GET/PUT/POST/DELETE) 与服务器通信
- Direct - 使用 Ext.direct.Manager 发送请求
代理的操作原则是所有执行的操作都是创建、读取、更新或删除。这四个操作分别映射到create、read、update和destroy方法。每个 Proxy 子类都实现这些功能。
每个 CRUD 方法都需要一个 Operation 对象作为唯一的参数。Operation 封装了有关 Store 希望执行的操作、要修改的模型实例等信息。有关更多详细信息,请参阅 Operation 文档。每个 CRUD 方法还接受一个回调函数,以便在完成时异步调用。
代理还支持通过批处理方法调用的批处理对象对操作进行批处理。
可用时间:1.1.0