ExtJS回调函数示例

问题描述 投票:4回答:1

我是ExtJs的新手,我正在努力弄清楚如何在ExtJs中使用回调函数。我正在使用的ExtJs版本是4.2.1基本上我想链接两个函数的执行:

func1:function(){}

func2:function(){}

这样func2()只在func1()完成后才开始执行。

从我到目前为止所读到的,我需要使用回调函数,但对于我的生活,我无法得到它。

这是我的代码:

filter: function (filters, value) {

    if (Ext.isString(filters)) {
        filters = {
            property: filters,
            value: value
        };
    }

    var me = this,
        decoded = me.decodeFilters(filters),
        i = 0,
        length = decoded.length;

    for (; i < length; i++) {
        me.filters.replace(decoded[i]);
    }

    Ext.Array.each(me.filters.items, function (filter) {
        Ext.Object.each(me.tree.nodeHash, function (key, node) {
            if (filter.filterFn) {
                if (!filter.filterFn(node)) node.remove();
            } else {
                if (node.data[filter.property] != filter.value) node.remove();
            }
        });
    });
    me.hasFilter = true;

    console.log(me);
},

clearFilter: function() {
    var me = this;
    me.filters.clear();
    me.hasFilter = false;
    me.load();
},

isFiltered: function() {
    return this.hasFilter;
},


filterNavAdminSTByUserName: function (nameValue) {

    this.clearFilter();

    this.filter([{
        property: 'userName',
        value: nameValue
    }]);

}

我的问题是this.filter()在this.clearFilter()之前执行;如何在this.clearFilter()完成后强制this.filter()执行?

提前致谢!

extjs4
1个回答
0
投票

经过一番深思熟虑后,我终于弄明白了回调函数是如何工作的。所以这是解决方案:

clearAndFilter: function (nameValue) {
    var me = this;
    me.filters.clear();
    me.hasFilter = false;
    me.load({
        scope: me,
        callback: function () {
            // filter the store 
            me.filter('userName', nameValue);
        }

    });
},

filterNavAdminSTByUserName: function (nameValue) {
    this.clearAndFilter(nameValue);
}

感觉很好回​​答我的第一篇文章!

© www.soinside.com 2019 - 2024. All rights reserved.