Extjs批量加载多个商店

时间:2014-02-26 07:44:14

标签: extjs asp.net-web-api extjs4.2

故事是:

我有一个复杂的表格,大约有10个组合框。他们每个人都从不同的商店(Restful)获取他们的绑定列表。例如:

  • / 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个串行请求)。

提前致谢

1 个答案:

答案 0 :(得分:2)

服务器端您可以使用批量请求(聚合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
    }
});