ExtJS回调函数示例

时间:2015-04-08 21:04:32

标签: extjs4

我是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()?

提前致谢!

1 个答案:

答案 0 :(得分: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);
}

很高兴回答我在这里的第一篇文章!