Backbone项目对象的方法

时间:2015-07-14 08:06:03

标签: javascript backbone.js

下面是示例JSON数据

"items": [{
                "id": "18",
                "attributes": [{
                    "identifier": "Style",
                    "value": "peacock"
                }, {
                    "identifier": "Size",
                    "value": "L"
                }]
            },
            {
                "id": "300438",
                "attributes": [{
                    "identifier": "Style",
                    "value": "peacock"
                }, {
                    "identifier": "Size",
                    "value": "M"
                }]
            }]

我需要获取项目ID,其中Style = peacock和Size = L. 我怎么能用骨干做到这一点?

我制作了一个类似

的集合
var itemsCollection = new IEA.Collection(itemsData)

这包含所有项目。

2 个答案:

答案 0 :(得分:0)

underscore.js不支持过滤嵌套对象,可以使用过滤器和where函数之间的组合

filteredItems = itemsCollection.filter(function(item) {
  return _.where(item.get("attributes"), {
      "identifier": "Style",
      "value": "peacock"
    }).length > 0 &&
    _.where(item.get("attributes"), {
      "identifier": "Size",
      "value": "M"
    }).length > 0;
});

答案 1 :(得分:0)

Alternate.I通过创建新数组并在其中存储所需的值来简化JSON。 然后我用骨干在哪里返回id的方法。

 productData.items.forEach(function(item, index) {
                    var data = {'id': item.id};

                    item.attributes.forEach(function(attribute) {
                        data[attribute.identifier] = attribute.value
                    });

                    productVariants.push(data);
                });

var itemsCollection = new backbone.Collection(productVariants);