我有代码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() {
}
});
答案 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.Model
或Ext.data.Store
如果您需要自己创建代理实例,则需要创建具体实例。超类在API
中记录了他们的直接子类
但是如果读者没有帮助,因为您只找到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'
}
});