DOJO过滤选择RegExp查询

时间:2012-08-24 14:03:58

标签: javascript dojo

我想实现这样的目标:

filteringSelect.query = {id: "12|13"};

filteringSelect.query = {id: new RegExp("12|13")};

有可能吗?

我使用ItemFileReadStore作为FilteringSelect的商店。

1 个答案:

答案 0 :(得分:1)

如果您想加倍努力,请参阅Fuzzy Matches on dijit.form.ComboBox / dijit.form.FilteringSelect Subclass。但是,这用于过滤用户输入。

在filterSelect中打开/输入任何内容之前过滤掉条目,继续你正在做的事情。但是,一个简单的字符串不接受OR运算符,使用RegExp

ItemFileReadStore docs on query

var store = new ItemFileReadStore( {
    query: {
       id: new RegExp("/^(12|13)$/")
    }
} );

作为起点,商店中存在所有商品,使用查询引擎的方式是fetch

store.fetch({
        query: { 
          // yes, you can set the query property directly 
          // in the store and leave out this parameter
            id: new RegExp("^(1|12)$")
        },
        onComplete: function(items) {
            dojo.forEach(items, function(item) {
                console.log(store.getValue(item, 'name'))
            });
        }

    })

请参阅http://jsfiddle.net/LuUbT/示例用法