findRecord: function() 메소드는 findRecord 메소드
코드 복사에서 호출됩니다. 코드는 다음과 같습니다. findRecord: function() {
var me = this,
index = me.find.apply(me, 인수);
return index !== -1 ? me.getAt(index) : null;
찾기 방법 입력
코드 복사
코드는 다음과 같습니다. find: function(property, value, start, anyMatch, caseSensitive, extractMatch) { var fn = this.createFilterFn(property, value, anyMatch, caseSensitive, extractMatch)
return fn ? .data.findIndexBy(fn, null, start) : -1;
},
createFilterFn 메소드
createFilterFn: function(property, value, anyMatch, caseSensitive, extractMatch) {
if (Ext. isEmpty(value)) {
return false;
}
value = this.data.createValueMatcher(value, anyMatch, caseSensitive, extractMatch)
return function(r) {
반환 값 .test(r.data[property]);
};
},
findIndexBy : function(fn, 범위, 시작){
var me = this,
keys = me. 키,
items = me.items,
i = 시작 || 0,
len = items.length
for (; i < len; i ) {
if (fn.call(scope || me, items[i],keys[i])) {
return i;
}
}
return -1; 🎜>
주의하세요
value.test(r.data[property]); 여기서 BUG가 발생합니다
여기에서 사용하는 속성은
여기입니다. ID==1인 레코드를 조회하려면
이 루프를 통해 수행됩니다
코드 복사
},
즉,
value.test(r.data[property])가 매번 호출됩니다.
이 판단은 다음을 통해 이루어집니다. 정규식
이 상황을 테스트할 수 있습니다
코드 복사
이유는 다들 아시리라 생각합니다.
ID=1이라고 판단했을 때 1로 시작하는 ID가 나오면 이때 문제가 있다고 판단하게 됩니다.