Extjs批量加载多个商店
问题描述:
故事是:Extjs批量加载多个商店
我有一个复杂的形式与大约10个组合框。他们每个人都从不同的商店(Restful商店)获取他们的绑定列表。例如:
- /API /项目/ activeyears
- /API /用户/管理员
- /API /项目/ availableDates
- ...
我的服务器端技术( Microsoft WebApi 2)优雅地支持批量请求(在这里描述:http://bradwilson.typepad.com/blog/2012/06/batching-handler-for-web-api.html)。
我想知道我是否可以在ExtJs中做到这一点?如果是,请告诉我如何,但如果你的答案是否定的,你能否给我一个替代解决方案?请求10个不同的商店使表单加载速度太慢(当所有主流浏览器同时发出2个并行请求时,我应该至少等待5个串行请求)。
预先感谢
答
服务器端可以使用批处理请求(合计2×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
}
});
+0
感谢您的解决方法。看来你的解决方案是最好的解决方法,尽管它迫使我“写”一个新的API来聚合我的需求。 –
至少你可以通过使用Ext.direct提供商,允许您定义一个时间框架内对所有的请求会捆绑做到这一点。无论如何,听到更多关于该主题的其他提供商 – sra