EXTjs4.0的store的findRecord的BUG演示代碼
更新時間:2013年06月08日 10:30:57 作者:
EXTjs4.0 的store的findRecord的BUG:當(dāng)判斷ID=1的時候,遇到1開頭的ID的時候,這個時候就判斷出問題了,有類似問題的朋友可以了解下哈
在findRecord方法調(diào)用了 findRecord: function()這個方法
findRecord: function() {
var me = this,
index = me.find.apply(me, arguments);
return index !== -1 ? me.getAt(index) : null;
},
進(jìn)入find方法
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;
},
createFilterFn方法
createFilterFn: function(property, value, anyMatch, caseSensitive, exactMatch) {
if (Ext.isEmpty(value)) {
return false;
}
value = this.data.createValueMatcher(value, anyMatch, caseSensitive, exactMatch);
return function(r) {
return value.test(r.data[property]);
};
},
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;
},
請注意
value.test(r.data[property]);有BUG的地方就出在這里
我這里用property是"ID"字段.
這里是查詢ID==1的這條記錄record,
它通過這個循環(huán)來做的
for (; i < len; i++) {
if (fn.call(scope || me, items[i], keys[i])) {
return i;
}
},
即每次都調(diào)用
value.test(r.data[property])
這個判斷是通過正則表達(dá)式來做的,
大家可以測試一下這個情況
var value=new RegExp('1');
var b=value.test('15')//這個是返回成功的。
我想大家都知道原因了,
當(dāng)判斷ID=1的時候,遇到1開頭的ID的時候,這個時候就判斷出問題了。
復(fù)制代碼 代碼如下:
findRecord: function() {
var me = this,
index = me.find.apply(me, arguments);
return index !== -1 ? me.getAt(index) : null;
},
進(jìn)入find方法
復(fù)制代碼 代碼如下:
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;
},
createFilterFn方法
createFilterFn: function(property, value, anyMatch, caseSensitive, exactMatch) {
if (Ext.isEmpty(value)) {
return false;
}
value = this.data.createValueMatcher(value, anyMatch, caseSensitive, exactMatch);
return function(r) {
return value.test(r.data[property]);
};
},
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;
},
請注意
value.test(r.data[property]);有BUG的地方就出在這里
我這里用property是"ID"字段.
這里是查詢ID==1的這條記錄record,
它通過這個循環(huán)來做的
復(fù)制代碼 代碼如下:
for (; i < len; i++) {
if (fn.call(scope || me, items[i], keys[i])) {
return i;
}
},
即每次都調(diào)用
value.test(r.data[property])
這個判斷是通過正則表達(dá)式來做的,
大家可以測試一下這個情況
復(fù)制代碼 代碼如下:
var value=new RegExp('1');
var b=value.test('15')//這個是返回成功的。
我想大家都知道原因了,
當(dāng)判斷ID=1的時候,遇到1開頭的ID的時候,這個時候就判斷出問題了。
相關(guān)文章
Extjs中ComboBoxTree實(shí)現(xiàn)的下拉框樹效果(自寫)
最近涉及到的一個項(xiàng)目中,需要實(shí)現(xiàn)ComboBoxTree的效果,由于在Extjs中是沒有這種效果,所以看看別人的資料自己寫了一個,感興趣的朋友可以參考下哈2013-05-05
Extjs中的GridPanel隱藏列會顯示在menuDisabled中解決方法
在Extjs中的GridPanel會有這樣的情況,隱藏列會顯示在menuDisabled中,但是這個一般沒有什么用處,只是用于后臺取值的作用,感興趣的朋友可以了解下啊,希望本文對你有所幫助2013-01-01
Extjs 3.3切換tab隱藏相應(yīng)工具欄出現(xiàn)空白解決
在切換tabpanel的時候,把相應(yīng)的工具欄隱藏掉,結(jié)果出現(xiàn)空白,先熊板板的空白不過后來終于解決,接下來與大家分享下解決技巧,感興趣的朋友可以參考下哈2013-04-04
Extjs NumberField后面加單位實(shí)現(xiàn)思路
本文為大家介紹下在NumberField后面加單位,具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下2013-07-07
Extjs學(xué)習(xí)筆記之九 數(shù)據(jù)模型(上)
本文開始進(jìn)入Extjs最核心最優(yōu)秀的部分。2010-01-01
JavaScript的Ext JS框架中的GridPanel組件使用指南
GridPanel和TreePnal功能類似,都是Ext JS中的表格便攜利器,相比之下GridPanel還要更強(qiáng)大并且更復(fù)雜一些,下面我們就來整理一下JavaScript的Ext JS框架中的GridPanel組件使用指南2016-05-05
Extjs改變樹節(jié)點(diǎn)的勾選狀態(tài)點(diǎn)擊按鈕將復(fù)選框去掉
需要一個功能點(diǎn)擊一個按鈕后將樹節(jié)點(diǎn)前的復(fù)選框去掉,變成沒有選擇的狀態(tài),百度一下發(fā)現(xiàn)個不錯的方法,需要的朋友可以參考下2013-11-11

