2014-02-26 73 views
2

故事是: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个串行请求)。

预先感谢

+1

至少你可以通过使用Ext.direct提供商,允许您定义一个时间框架内对所有的请求会捆绑做到这一点。无论如何,听到更多关于该主题的其他提供商 – sra

回答

2

服务器端可以使用批处理请求(合计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来聚合我的需求。 –