2014-02-26 111 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來聚合我的需求。 –