> 웹 프론트엔드 > JS 튜토리얼 > EXTjs4.0_extjs 저장소에 있는 findRecord의 BUG 데모 코드

EXTjs4.0_extjs 저장소에 있는 findRecord의 BUG 데모 코드

WBOY
풀어 주다: 2016-05-16 17:32:27
원래의
1139명이 탐색했습니다.

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인 레코드를 조회하려면
이 루프를 통해 수행됩니다




코드 복사

코드는 다음과 같습니다. : for (; i < len; i ) { if (fn.call(scope || me, items[i],keys[i])) { return i; }
},


즉,
value.test(r.data[property])가 매번 호출됩니다.
이 판단은 다음을 통해 이루어집니다. 정규식
이 상황을 테스트할 수 있습니다



코드 복사

이유는 다들 아시리라 생각합니다.
ID=1이라고 판단했을 때 1로 시작하는 ID가 나오면 이때 문제가 있다고 판단하게 됩니다.
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿