故事是:
我有一个包含大约 10 个组合框的复杂表单。他们每个人都从不同的商店(Restful 商店)获取他们的绑定(bind)列表。例如:
- /api/projects/activeyears
- /api/用户/经理
- /api/projects/availableDates
- ...
我的服务器端技术 (Microsoft WebApi 2) 优雅地支持批处理请求(此处描述:http://bradwilson.typepad.com/blog/2012/06/batching-handler-for-web-api.html)。
我想知道我是否可以在 ExtJs 中做到这一点?如果是,请告诉我怎么做,但如果你的回答是否定的,你能给我一个替代解决方案吗?请求 10 个不同的商店会使表单加载速度太慢(当所有主要浏览器同时发出 2 个并行请求时,所以我应该等待至少 5 个串行请求)。
提前致谢
最佳答案
服务器端您可以使用批处理请求(聚合 2 x 5 请求或 3+3+4)。理想情况下,您会返回类似以下内容:
{
success: true,
activeyears: [ ... ],
managers: [ ... ],
availableDates: [ ... ],
...
}
从 ExtJS 的角度来看,这是一个没有连接到商店或代理的 Ajax 请求。
在 success
中你有这样的东西:
Ext.Ajax.request({
url: '/api/myAggregatedRequest1',
method: 'GET',
success: function (result, request) {
var jsonResp;
jsonResp = Ext.decode(result.responseText);
if (jsonResp.success) {
myActiveYearsStore.loadData(jsonResp.activeyears);
myManagersStore.loadData(jsonResp.managers);
myAvailableDatesStore.loadData(jsonResp.availableDates);
// ... trigger some event
} else {
// ... error handling
}
},
failure: function (result, request) {
// ... error handling
}
});
关于Extjs批量加载多个店铺,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22034925/