0

Breezejs と WEBAPI を使用して、各製品にコンポーネントのリストがある製品のリストを取得します。

    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() をナビゲートすると、配列にコンポーネントが 1 つだけ表示されます。

/breeze/Breeze/products を参照すると、各製品のすべてのコンポーネントが表示されます。

何か不足していますか?/breeze/Breeze/products を直接呼び出したときに得られる応答は次のとおりです。

 {
    $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"
        },
    }
    ],
  },

オブジェクトのメタデータは、/breeze/Breeze/metadata を介してサーバーから取得されます

4

1 に答える 1

0

2 つの別々のデータ型を使用し、それらをコンポーネント配列に入れているように見えます。

JSON を取得すると、これらの追加のプロパティが含まれているように感じますが、タイプが GCDMS.Models.CalibrationEquipment、GCDMS_Model であるため、これらは DD.Components にマップされません。

編集

すべての意図と目的のために、表示しているものが返されたデータと一致するなどの条件で、あなたがしていることは正しいように見えます...

私が提案できる唯一のことは、結果が返された後、これをメソッドに入れて呼び出すことです - console.log(entityManager.getEntities()); 3 つのコンポーネントがあるかどうかを確認し、それらが適切にマッピングされていることを確認します。

于 2013-10-04T15:15:12.520 に答える