Ext.each
отличается от обычного цикла JavaScript for тем, что вы можете возвращать false в каждом вызове, чтобы остановить итерацию.Документация Ext.each упоминает это:
Если предоставленная функция возвращает false, итерация останавливается, и этот метод возвращает текущий индекс.
Поэтому, когда вы возвращаетесь изв каждом вызове вы не возвращаете истину / ложь функции filterBy
, как вы ожидаете, а функции each
.
Старайтесь держать ручку на isChecked
вне каждого циклаи затем верните true / false, основываясь на том, что было найдено внутри каждой функции:
// excluded your other code to highlight area around Ext.each call
var isChecked = false;
Ext.each(elems, function(el){
if(Ext.getCmp(el.id).teamName.toUpperCase() == app_rec) {
ischecked = Ext.get(Ext.getCmp(el.id).teamName+'cb').dom.checked;
// can exit early if isChecked is true
if(isChecked){
return false; // this will exit the Ext.each method
}
}
});
// if this is true, filterBy will include the record
return isChecked;