如何在 ExtJS 4.1 中销毁商店?

Posted

技术标签:

【中文标题】如何在 ExtJS 4.1 中销毁商店?【英文标题】:How to destroy stores in ExtJS 4.1? 【发布时间】:2012-05-18 12:33:06 【问题描述】:

我曾经使用商店的autoDestroy 属性。清理内存资源。但我在 API 中找不到这个了。

我发现EXTJSIV-4844 - Ext.data.Store autoDestroy config is missing 列在4.1 RC1 Bug Fixes 中(尽管我在任何地方都找不到该错误的线索)。

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

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

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

【问题讨论】:

【参考方案1】:

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;
        
    
,

【讨论】:

以上是关于如何在 ExtJS 4.1 中销毁商店?的主要内容,如果未能解决你的问题,请参考以下文章

Extjs 4.1 - 如何将数据从商店加载到另一个商店

如何在 ext js 4.1 中重新加载商店?

如何在 ExtJS 4.1 中禁用网格中的某些行

ExtJS 4.1 如何动态创建带有网格的窗口

ExtJs 4.1 网格分组功能 - 防止“组”关键字出现在标题中

如何解决 ExtJS 4.1 Combobox pageSize 的 bug?