我有一个网格面板,我在内部创建了一个类似
的功能myFunction: function(variable){
grid.getStore().each(function(item) {
if (item.get('value') == variable) {
alert('run'); // running
return true; // but not return true
}
});
return false;
}
但是当我使用
时alert(grid.myFunction('abc')); // always return false Although alert('run'); running
如何解决这个问题
答案 0 :(得分:1)
您只在each
函数内返回true。这将使您脱离内部函数,但不会从外部函数返回true。要获得您想要的内容,您可以使用在each
之外设置的变量,然后在结尾处返回该变量:
myFunction: function(variable){
var found = false;
grid.getStore().each(function(item) {
if (item.get('value') == variable) {
alert('run');
found = true;
return false;
}
});
return found;
}
另请注意,从store.each
返回false会中止迭代,这是您在找到记录后想要执行的操作,所以我也在那里添加了。请参阅此处的文档:http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.data.Store-method-each