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 的權(quán)限問題 要求控制的對象是 菜單,按鈕,URL
這兩天在解決extjs 的權(quán)限問題。要求控制的對象是 菜單,按鈕,URL2010-03-03關(guān)于viewport,Ext.panel和Ext.form.panel的關(guān)系
那個深入淺出ext作者比我還懶 viewport存放Ext.panel對象,其容器中的成員可以以borderlayout方式布局2009-05-05extjs 學(xué)習(xí)筆記 四 帶分頁的grid
很多時候,我們需要顯示在grid中的數(shù)據(jù)不是短短的幾條或者幾十條,而是成千上萬條。如果讓大量的數(shù)據(jù)一股腦全都顯示在一個頁面中,可以想象會造成什么樣的用戶體驗(yàn)。2009-10-10常用Extjs工具:Extjs.util.Format使用方法
常用Extjs工具:Extjs.util.Format使用方法,需要的朋友可以參考下2012-03-03使用ExtJS技術(shù)實(shí)現(xiàn)的拖動樹結(jié)點(diǎn)
在本文將介紹TreePanel組件非常有意思的一個功能:結(jié)點(diǎn)拖放。要使TreePanel組件的結(jié)點(diǎn)可以拖放非常簡單,只需要將TreePanel類的enableDD選項(xiàng)參數(shù)設(shè)為true即可。當(dāng)然,要想實(shí)現(xiàn)更復(fù)雜的功能,還需要配合其他的參數(shù)和事件。2010-08-08Extjs的FileUploadField文件上傳出現(xiàn)了兩個上傳按鈕
Extjs的FileUploadField文件上傳在頁面中出現(xiàn)了兩個上傳按鈕,這個是和ext的本身css的樣式有關(guān)系,所以要將樣式修改下2014-04-04ExtJs默認(rèn)的字體大小改變的幾種方法(自己整理)
本文列出網(wǎng)上收集的幾種方法,希望對大家有用,并且做了下瀏覽器兼容,感興趣的朋友可以參考下哈2013-04-04