EXTjs4.0的store的findRecord的BUG演示代碼
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,
它通過這個(gè)循環(huán)來做的
for (; i < len; i++) {
if (fn.call(scope || me, items[i], keys[i])) {
return i;
}
},
即每次都調(diào)用
value.test(r.data[property])
這個(gè)判斷是通過正則表達(dá)式來做的,
大家可以測試一下這個(gè)情況
var value=new RegExp('1');
var b=value.test('15')//這個(gè)是返回成功的。
我想大家都知道原因了,
當(dāng)判斷ID=1的時(shí)候,遇到1開頭的ID的時(shí)候,這個(gè)時(shí)候就判斷出問題了。
相關(guān)文章
extjs 的權(quán)限問題 要求控制的對象是 菜單,按鈕,URL
這兩天在解決extjs 的權(quán)限問題。要求控制的對象是 菜單,按鈕,URL2010-03-03關(guān)于viewport,Ext.panel和Ext.form.panel的關(guān)系
那個(gè)深入淺出ext作者比我還懶 viewport存放Ext.panel對象,其容器中的成員可以以borderlayout方式布局2009-05-05extjs每個(gè)組件要設(shè)置唯一的ID否則會(huì)出錯(cuò)
extjs每個(gè)組件要設(shè)置唯一的ID,否則會(huì)造成各種錯(cuò)誤。EXTJS基本上是靠ID來識(shí)別組件的2014-06-06extjs 學(xué)習(xí)筆記 四 帶分頁的grid
很多時(shí)候,我們需要顯示在grid中的數(shù)據(jù)不是短短的幾條或者幾十條,而是成千上萬條。如果讓大量的數(shù)據(jù)一股腦全都顯示在一個(gè)頁面中,可以想象會(huì)造成什么樣的用戶體驗(yàn)。2009-10-10常用Extjs工具:Extjs.util.Format使用方法
常用Extjs工具:Extjs.util.Format使用方法,需要的朋友可以參考下2012-03-03使用ExtJS技術(shù)實(shí)現(xiàn)的拖動(dòng)樹結(jié)點(diǎn)
在本文將介紹TreePanel組件非常有意思的一個(gè)功能:結(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)了兩個(gè)上傳按鈕
Extjs的FileUploadField文件上傳在頁面中出現(xiàn)了兩個(gè)上傳按鈕,這個(gè)是和ext的本身css的樣式有關(guān)系,所以要將樣式修改下2014-04-04ExtJs默認(rèn)的字體大小改變的幾種方法(自己整理)
本文列出網(wǎng)上收集的幾種方法,希望對大家有用,并且做了下瀏覽器兼容,感興趣的朋友可以參考下哈2013-04-04