Extjs商店:实施' find()'反方向

时间:2014-08-06 10:42:09

标签: extjs store extjs4.2

因此Extjs 4.0有各种方法可以在特定字段中查找特定值。来自文档:

find( fieldName, value, [startIndex], [anyMatch], [caseSensitive], [exactMatch] )

完美无缺。

我想做的是反向实施同样的事情。例如,如果startIndex为100,我想测试记录99,98,97等,直到找到命中。但是,我无法找到任何方法。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

如果您查看来源,您会看到find只是在MixedCollection上调用方法findIndexBy

// store:
find: function(property, value, start, anyMatch, caseSensitive, exactMatch) {
    var fn = this.createFilterFn(property, value, anyMatch, caseSensitive, exactMatch);
    return fn ? this.data.findIndexBy(fn, null, start) : -1;
},

// mixedcollection
findIndexBy : function(fn, scope, start){
    var me = this,
        keys = me.keys,
        items = me.items,
        i = start || 0,
        len = items.length;

    for (; i < len; i++) {
        if (fn.call(scope || me, items[i], keys[i])) {
            return i;
        }
    }
    return -1;
},

因此,要获得所需的结果,您只需创建自己的find方法并更改上一个for循环。

答案 1 :(得分:0)

没有这样的方法。最简单的可能是:

  1. 从0到101
  2. 致电getRange
  3. 向后遍历返回的数组以查找记录