0

使用breathjs 和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() 时,我只得到数组中的一个组件。

当我浏览到 /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

在我看来,您正在使用两种单独的数据类型并将它们放入组件数组中。

我有一种感觉,当您返回 JSON 时,它具有这些附加属性,但它们不会映射到 DD.Components,因为它们的类型是 GCDMS.Models.CalibrationEquipment、GCDMS_Model。

编辑

出于所有意图和目的,您所做的事情看起来都是正确的,只要您显示的内容与返回的数据相匹配,等等......

我唯一可以建议的是,在返回结果后,将其放入一个方法中并调用它 - console.log(entityManager.getEntities()); 并查看是否有 3 个组件并确保它们正确映射回来。

于 2013-10-04T15:15:12.520 回答