2012-03-12 33 views
1

堆棧:如何獲得單一的實體結果

  • ASP MVC4貝塔
  • 的Web API
  • Knockout.js
  • Upshot.js

我有一個主 - 場景。在主部分,我正在編輯一個訂單,在細節部分我有訂單產品。我可以列出我擁有的所有產品,並且效果很好,但我現在需要顯示主要和細節。

這是我的Web API方法:

public Order GetSingleOrder(long orderId) 
{ 
    return DbContext.Orders 
         .Include("OrderedProducts") 
         .Include("OrderedProducts.Product") 
         .Include("OrderedProducts.Product.Family") 
         .Single(o => o.OrderId == orderId); 
} 

這工作不錯,它返回只有一個產品訂單,它的信息。

但是在viewModel中,我無法將其作爲單個訂單獲得,結果數據源僅提供了一種名爲getEntities()的方法,無法獲取它的項目。

var CreateOrEditViewModel = function() { 
    var self = this; 
    self.dsOrder = upshot.dataSources.SingleOrder.refresh(); 

    self.orders = self.dsOrder.getEntities(); 
    self.order = self.orders()[0]; 

}; 

出現了延遲加載,並在當時getEntities()被稱爲它沒有任何項目和self.orders()回報空collecton。

更新: 我需要一種方式來獲得一個訂單,都綁定到命令,讓用戶更新它的領域,並保存它通過數據源。

回答

3

它不是懶加載的,但它是異步的。當你調用upshot.dataSources.SingleOrder.refresh()時,你可以傳入兩個回調函數,一個用於成功,另一個用於出錯。在回調中,您將獲得加載的數據。

+0

感謝您的異步提示,我能夠在綁定'if:orders()。length> 0'上放置一個條件,並且停止了錯誤 – 2012-03-13 02:31:11

相關問題