0

我有以下数组:

    [{"id":1,"vak":{"naam":"Wiskunde"},"onderwerp":"Dit is het onderwerp van de les ..."},
     {"id":2,"vak":{"naam":"Aardrijkskunde"},"onderwerp":"Bli Bla, Dit is het onderwerp van de les ..."},
     {"id":3,"vak":{"naam":"Biologie"},"onderwerp":"Dit is het onderwerp van de les ..."},
     {"id":4,"vak":{"naam":"Wizkunde"},"onderwerp":"Dit is het onderwerp van de les ..."}]

我想实现一个过滤选择来搜索“naam”。当我搜索“onderwerp”时,我只是将我的 searchAttr 设置为:

    this.lessonsSearchBox.set("searchAttr", "onderwerp");

但是如果我想搜索“naam”,我不知道如何设置我的 searchAttr,因为“naam”是“vak”的一个属性。

我怎样才能做到这一点?

4

1 回答 1

1

据我所知(并查看了源代码),你不能。它只是使用该属性作为属性名称。

我能想出的最佳解决方案是映射您的数组,例如执行以下操作:

var newRoosterItems = array.map(roosterItems, function(item) {
    var newItem = lang.clone(item);
    lang.mixin(newItem, {
        vakNaam: item.vak.naam
    });
    return newItem;
});

这会将您的数组映射到一个新的项目数组,并且每个项目都会有一个名为vakNaam的属性,其中包含naam您的vak.

可以在此处找到一个示例 JSFiddle 。


如果您不需要原始数据,您还可以选择转换现有数据,方法是:

array.forEach(roosterItems, function(item) {
    lang.mixin(item, {
        vakNaam: item.vak.naam
    });
});
于 2013-10-22T13:11:23.433 回答