0

当然,应该可以对同一个商店发出相同的查询以填充 dGrid(或任何其他形式的网格)和具有相同行的 filterSelect 中的下拉列表。

但是看起来过滤选择需要表单的响应

{
    "identifier": "abbreviation",
    "label": "name",
    "items": [
        { "abbreviation": "AL", "name": "Alabama" },
        { "abbreviation": "AK", "name": "Alaska" },

        { "abbreviation": "WY", "name": "Wyoming" }
    ]
}

and the dgrid needs 
[
        { "abbreviation": "AL", "name": "Alabama" },
        { "abbreviation": "AK", "name": "Alaska" },

        { "abbreviation": "WY", "name": "Wyoming" }
]

似乎来自商店的标识符和标签属性完全是多余的,因为您通过身份 API 获取标识符,并且无论如何您都可以在实例化过滤选择时指定所有内容。

是的,我知道有变通办法——我可以使用两个不同的存储或查询,并让服务器端根据查询中的某些参数生成这两个。但是,如果我这样做,当我通过 dgrid 进行更改时,更改是否会正确传播?或者我可以使用将额外字段放在响应前面的东西来包装商店 API,并将包装的商店传递给过滤选择,但是有没有更简单的方法?

4

1 回答 1

0

使用您的数组创建数据存储,例如:

var store = Observable(new Memory({ 
    idProperty: "abbreviation", 
    data: [ { 
        "abbreviation": "AL", "name": "Alabama" 
    }, { 
       "abbreviation": "AK", "name": "Alaska" 
    }, { 
      "abbreviation": "WY", "name": "Wyoming" 
    }]
 }));

然后,您可以将此商店设置为 dgrid 为:

dgrid.set('store', store);

对于您的过滤选择,您可以将此商店设置为

new FilteringSelect({ 
    searchAttr:"name", 
    store: store 
});
于 2013-09-20T17:21:46.667 回答