2013-10-04 143 views
0

使用breezejs和WEBAPI,我拉出產品列表,每個產品都有一個組件列表。Breezejs嵌套數組和結果綁定

var list = function (productsObservable) { 
     var query = EntityQuery.from('Products') 
        .expand('components') 
     return manager.executeQuery(query) 
       .then(querySucceeded) 
       .fail(datacontext.queryFailed); 

     function querySucceeded(data) { 
      // process results 
     } 
    } 



function querySucceeded(data) { 
    productsObservable(data.results); 
} 

    var productsObservable= ko.observableArray([]); 

原始結果表明3個分量爲第一產品的列表在列表中,而當我導航data.results [0] .component()i。在得到僅一個分量陣列。

同樣的事情,當我瀏覽到/微風/微風/產品,我看到每個產品的所有組件。

我錯過了什麼?以下是我直接致電/ breeze/Breeze /產品時得到的回覆。

{ 
    $id: "1", 
    $type: "DD.Product, DD_Model", 
    Id: 1, 
    Name: "XXXX", 
    Components: [ 
    { 
     $id: "2", 
     $type: "DD.Component, DD_Model", 
     Id: 1, 
     Name: "component1" 
     Product: { 
      $ref: "1" 
     }, 
    }, 
    { 
     $id: "3", 
     $type: "DD.Component, DD_Model", 
     Id: 2, 
     Name: "component2" 
     Product: { 
      $ref: "1" 
     }, 
    }, 
    { 
     $id: "4", 
     $type: "DD.Component, DD_Model", 
     Id: 11, 
     Name: "component3" 
     Product: { 
     $ref: "1" 
     }, 
    } 
    ], 
    }, 

對象元數據是從通過/微風/微風/元

回答

0

它就像你正在使用兩個不同的數據類型,並把它們放入components數組我看來服務器中檢索。

我有一種感覺,當你得到JSON回來它有這些額外的屬性,但他們不會被映射到DD.Components,因爲他們是類型GCDMS.Models.CalibrationEquipment,GCDMS_Model。

編輯

對於所有意圖和目的,你正在做的事情看起來是正確的,前提是你所顯示的比賽返回的數據,等等

,我可以建議的唯一事情是在你的結果返回後,把它放在一個方法中並調用它 - console.log(entityManager.getEntities());看看是否有3個組件,並確保它們正確映射回來。

+0

這只是一個複製和粘貼錯誤,修正它,結構明智的所有組件是相同的,沒有什麼不同。 – ken

+0

顯示您的查詢請求功能,然後請。你也使用服務器元數據或設置自己的? –

+0

添加了querySucceed函數,是的,我從服務器拉元數據。謝謝。 – ken