Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何删除控制器ExtJS?_Extjs_Controller - Fatal编程技术网

如何删除控制器ExtJS?

如何删除控制器ExtJS?,extjs,controller,Extjs,Controller,我在应用程序中动态创建控制器,如下所示: var loadedController = me.app.getController(controller_name); loadedController.init(); 使用后如何删除此控制器? 谢谢。您可以使用obj.destroy()销毁任何Ext类。 请记住,还要删除对对象的所有引用,以便对其进行垃圾收集。ExtJs目前不支持删除开箱即用的控制器。要清理控制器,请执行以下操作: 使用取消注册此控制器在EventBus

我在应用程序中动态创建控制器,如下所示:

var loadedController = me.app.getController(controller_name);
            loadedController.init();
使用后如何删除此控制器?
谢谢。

您可以使用
obj.destroy()
销毁任何Ext类。
请记住,还要删除对对象的所有引用,以便对其进行垃圾收集。

ExtJs目前不支持删除开箱即用的控制器。要清理控制器,请执行以下操作:

  • 使用取消注册此控制器在EventBus上注册的所有事件侦听器的方法
    uncontrol
    扩展
    Ext.app.EventBus
    。查看
    Ext.app.EventBus#control
    的源代码,以派生实现。或使用
  • 使用从
    controllers
    集合中删除给定控制器实例的方法
    Ext.app.Application
    扩展
    。这是一个Ext.util.mixed集合,请查看
    Ext.app.Application\getController
    的源代码。然后使用
    uncontrol
    清除该控制器的所有注册侦听器
  • 在特定控制器和/或扩展
    Ext.app.controller
    上实施
    destroy
    方法。您至少应该调用
    clearManagedListeners()
    ,并可能销毁此控制器创建的其他对象,如视图或存储,如果这符合您的应用程序体系结构和控制器生命周期的话

Sencha论坛已启动高级会员请求。不幸的是,最初的请求自8月份以来一直没有得到答复。我刚才提到了这个线程,把这个请求碰了个正着

方法创建一个新的控制器对象,并将对它的引用存储在
控制器
数组中

这意味着,如果使用加载控制器,它将不会被删除,因为在应用程序对象的
controllers
属性中总会存储至少一个对它的引用

若要加载控制器,使其在失去对现有对象(DOM元素、Ext组件、其视图等)的任何引用后立即被销毁(释放其占用的内存),则应使用而不是。
代码如下:

var loadedController=Ext.create(
me.app.getModuleClassName(控制器名称,'controller'),
{
应用程序:me.app,
id:Ext.id(空,'controller')
}
);
loadedController.init(me.app);
loadedController.onLaunch(me.app);
loadedController
将是局部变量,并将从范围中退出。唯一将继续将新创建的控制器绑定到“现实生活”的是控制器自身创建的元素。
例如,控制器可以在他的方法中创建一个新的视图,该视图将被注入DOM,并且控制器将使用其方法中的绑定处理程序侦听视图事件。只要视图存在,控制器也将存在。但当用户关闭视图时,视图将被销毁,因为它是对控制器的最后一次引用,控制器也将被销毁

更新

使用控制器创建的侦听器将被附加到控制器,并且可能会阻止自动删除控制器,因为它们还可能保留对该控制器的引用。

回答好,您深入了解了主题:)回答好!这应该放在senchaGood Response的feature request中,您已经涵盖了所有必须删除的内容:)您如何测试控制器是否真的被删除?您是否在询问如何检查特定的JavaScript对象是否已被JavaScript引擎垃圾收集?