在组件(网格)Extjs 4.1中创建函数返回

时间:2013-08-02 13:30:50

标签: extjs extjs4.1

我有一个网格面板,我在内部创建了一个类似

的功能
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

如何解决这个问题

1 个答案:

答案 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