我正在使用 extjs(4.1.0) MVC 。我有一个使用组合框过滤器、日期选择器过滤器等设置的自定义网格。我正在附加来自控制器、视图和存储的片段。
传入的响应与模型不同,因此,响应通过覆盖故事代理的 read() 来拦截。此外,数据需要作为 Json 数据在 payload 中发送,因此 store 代理的 buildRequest() 也被覆盖以将 json 数据添加到请求中。(所有排序,分页参数也在这里添加)添加到这个 - 视图具有无限滚动。
视图第一次加载良好。但是在组合框更改/日期更改时,将重新加载存储并在请求中将这些作为 json 参数传递。
我在 firebug/chrome 中看到 XHR 中的响应,但网格不断显示加载掩码,等待加载。请帮助解决可能出现的问题。
Ext.define('Message.store.ListingStore', {
extend: 'Ext.data.Store',
model: 'Message.model.ListingModel',
autoLoad: true,
remoteSort: true,
purgePageCount:0,
buffered: true,....
.......
proxy: {
type: 'ajax',
actionMethods: {
read: 'POST'
},
url: 'http://localhost:8080
buildRequest: function(operation) {
Ext.apply(request, {
params: null,
jsonData: Ext.apply(request.params, {
page: operation.page,
start: operation.start,
limit: operation.limit,
catId:catValue,
sort:operation.sorters[0].property,
dir:operation.sorters[0].direction
})
});
........return request;
}
root: 'data',
totalProperty:'total',
successProperty :'success'
},
.....
});
//controller
Ext.define('Message.controller.Listing', {
extend:'Ext.app.Controller',
stores: ['ListingStore','SubscriptionStore','SubCategoryMasterStore','PriorityMasterStore'],
models: ['ListingModel'],
views: [
'MessageListing'
],
init:function () {
var controller = this;
'messagelisting combo' : {
select : this.handleComboSelect
},
'messagelisting datefield' : {
select : this.handleDateSelect
},
.....
handleComboSelect : function(gridview, el, rowIndex, colIndex, e, rec, rowEl) {
this.getStore('ListingStore').load();
},
handleDateSelect: function(gridview, el, rowIndex, colIndex, e, rec, rowEl) {
this.getStore('ListingStore').load({callback: function(response){
}});
这是一个非常复杂的案例,所以我无法发布整个代码。谢谢你。