Extjs批量加载多个存储库

3
故事背景是:
我有一个复杂的表格,有大约10个组合框。每个组合框从不同的存储库(Restful)中获取其绑定列表。例如:
  • /api/projects/activeyears
  • /api/users/managers
  • /api/projects/availableDates
  • ...
我的服务器端技术(Microsoft WebApi 2)优雅地支持批处理请求(在这里描述:http://bradwilson.typepad.com/blog/2012/06/batching-handler-for-web-api.html)。
我想知道是否可以在ExtJs中实现它?如果可以,请告诉我如何做,但如果您的答案是否定的,您能否给我一个替代方案?请求10个不同的存储库会使表单加载太慢(当所有主要浏览器只同时进行2个并行请求时,所以我必须等待至少5个串行请求)。
提前感谢。

1
你可以使用Ext.direct提供程序来实现此功能,它允许您定义一个时间范围,在此期间所有请求都会被捆绑在一起。无论如何,关于其他提供程序的相关主题可能更有趣。 - sra
1个回答

3

在服务器端,您可以使用批量请求(聚合2个5个请求或3+3+4个请求)。理想情况下,您返回类似以下的结果:

{
    success: true,
    activeyears: [ ... ],
    managers: [ ... ],
    availableDates: [ ... ], 
    ...
}

从 ExtJS 的角度来看,这是一个没有与 store 或 proxy 相关联的 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
    }
});

感谢你的解决方法。虽然它强制我“编写”一个新的API来满足我的需求,但似乎你的解决方案是最好的解决方法。 - Mahmoud Moravej

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接