Extjs存储:实现&x27;查找();反向

Extjs存储:实现&x27;查找();反向,extjs,store,extjs4.2,Extjs,Store,Extjs4.2,因此,ExtJS4.0有各种方法在特定字段中查找特定值。从文档中: find( fieldName, value, [startIndex], [anyMatch], [caseSensitive], [exactMatch] ) 工作完美 我想做的是反向实现同样的事情。例如,如果startIndex是100,我想测试记录99、98、97等等,直到找到一个命中。然而,我找不到任何方法来做到这一点。有人能帮忙吗?如果查看源代码,您会发现find只需在MixedCollection上调用方法fin

因此,ExtJS4.0有各种方法在特定字段中查找特定值。从文档中:

find( fieldName, value, [startIndex], [anyMatch], [caseSensitive], [exactMatch] )
工作完美


我想做的是反向实现同样的事情。例如,如果
startIndex
是100,我想测试记录99、98、97等等,直到找到一个命中。然而,我找不到任何方法来做到这一点。有人能帮忙吗?

如果查看源代码,您会发现
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;
},
//存储:
查找:函数(属性、值、开始、任意匹配、区分大小写、exactMatch){
var fn=this.createFilterFn(属性、值、anyMatch、区分大小写、exactMatch);
返回fn?this.data.findIndexBy(fn,null,start):-1;
},
//混合收集
findIndexBy:函数(fn、作用域、开始){
var me=这个,
keys=me.keys,
items=me.items,
i=开始| | 0,
len=项目长度;
对于(;i

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

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

  • 从0呼叫101
  • 向后遍历返回的数组以查找记录

  • “我找不到任何办法。”你到底试过什么?你搞不懂什么?