如何破坏ExtJS 4.1中的商店?

时间:2012-05-09 23:20:32

标签: extjs datastore destroy extjs4.1

我曾经使用商店的autoDestroy财产。清理内存资源。但是我再也找不到这个了。

我发现4.1 RC1 Bug Fixes中列出了EXTJSIV-4844 - Ext.data.Store autoDestroy config is missing(虽然我无法在任何地方找到该错误的主题)。

现在在RC3中,配置已从API中消失,并且它不再存在于源文件中。

我已将Ext.destroy用于视图,但从未用于商店。 API描述Ext.destroy方法here的方式听起来像:“此方法是为小部件设计的,但它会接受任何对象,看看它能做什么”。 - 换句话说,不是很明确。

是否有人碰巧知道Ext.destroy是否适用于商店并将其从内存中移除?或者推荐的方法是什么?

1 个答案:

答案 0 :(得分:8)

Ext.data.Store.destroyStore看起来像你想要使用的方法。由于某些原因它是私有的(如果显示私有,它甚至没有在文档中显示)但看起来它具有与3.4的公共Store.destroy http://docs.sencha.com/ext-js/3-4/#!/api/Ext.data.Store-method-destroy相同的功能。在4.x中有一个Store.destroy方法,但这是完全不同的东西,不应该用于从内存中销毁存储。以下是http://docs.sencha.com/ext-js/4-1/source/AbstractStore.html#Ext-data-AbstractStore的来源:

// private
destroyStore: function() {
    var me = this;

    if (!me.isDestroyed) {
        if (me.storeId) {
            Ext.data.StoreManager.unregister(me);
        }
        me.clearData();
        me.data = me.tree = me.sorters = me.filters = me.groupers = null;
        if (me.reader) {
            me.reader.destroyReader();
        }
        me.proxy = me.reader = me.writer = null;
        me.clearListeners();
        me.isDestroyed = true;

        if (me.implicitModel) {
            Ext.destroy(me.model);
        } else {
            me.model = null;
        }
    }
},