如何在 Sencha Touch 中的自定义组件内进行自毁

2024-01-14

update:

新代码:

Ext.define('Fiddle.MyCmp',{
     extend:'Ext.Component'
    ,alias:'widget.mycmp'
    ,config:{
         html:'MyCmp'
    }
    ,initialize:function() {
        var me = this;
        console.log(me);
        Ext.Function.defer(me.destroy, 5000, me);

        Ext.Function.defer(function(){
            console.log('after 8 seconds');
            console.log(this);

        }, 8000, me);
    }
});

Ext.application({
    name : 'Fiddle',
    ref:{
        cmp: 'mycmp'

    },

    launch : function() {
        Ext.Viewport.add({
            xtype:'mycmp'            
        });


    }
});

8秒后,我仍然可以打印出该组件。这是控制台日志:

类{onInitializedListeners:数组[0],initialConfig:对象,id: “ext-mycmp-1”,getUniqueId:函数,getId:函数…} VM1639:39

8 秒后 VM1639:43 类 {onInitializedListeners: Array[0], 初始配置:对象,id:“ext-mycmp-1”,getUniqueId:函数, getId:函数...}


我正在尝试在自定义组件中添加自毁功能。 但这根本行不通。

这是我的代码:

Ext.define('NoiseComponent', {
    extend: 'Ext.Component',
    xtype: 'noisestation',
    config: {
        name: null,
        updatedTime: new Date(),
        listeners: {
            destroy: function() {

                console.log("do something before destroy()");
                //thisComponent.destroy();
            },
            updatedata: function(thisComponent, newData, eOpts) {
                var startTime = newData[0].get("NoiseTime");
                this.config.updatedTime = new Date();

            },
            initialize: function(thisComponent, eOpts) {
                console.log("initialize component");

                setTimeout(function() {
                    thisComponent.selfDestory(thisComponent);

                }, 5000);
            }
        }
    },

    drawNoise: function() {

        console.log("drawNoise");
    },
    selfDestory: function(thisComponent) {
        console.log("self-destroy");
        thisComponent.destroy(thisComponent);
    }
});

var c = Ext.create("NoiseComponent");

console.log(c);

c.destroy();
//c.fireEvent('destroy');

console.log("after destroyed");
console.log(c);

setTimeout(function() {
    console.log("after 5s");
    console.log(c);
}, 5000);

这是我得到的控制台日志:

初始化组件 VM1591:44 类 {onInitializedListeners: Array[0],initialConfig:对象,id:“ext-noisestation-1”, getUniqueId:函数,getId:函数…} VM1591:72 做一些事情 在 destroy() VM1591:65 被销毁之后 VM1591:77 类 {onInitializedListeners:数组[0],initialConfig:对象,id: “ext-noisestation-1”,getUniqueId:函数,getId:函数…} VM1591:78 自毁 VM1591:60 在 destroy() 之前做一些事情 5 秒后 VM1591:65 VM1591:81 类 {onInitializedListeners: Array[0], 初始配置:对象,id:“ext-noisestation-1”,getUniqueId: 函数,getId:函数...} VM1591:82

这是我的 sencha jsfiddlehttps://fiddle.sencha.com/#fiddle/6cl https://fiddle.sencha.com/#fiddle/6cl


我想你想在组件初始化后 5 秒销毁它。如果是这样,下面的代码会执行此操作:

Ext.define('Fiddle.MyCmp',{
     extend:'Ext.Component'
    ,alias:'widget.mycmp'
    ,config:{
         html:'MyCmp'
    }
    ,destroy:function() {
        console.log('destroy override');
        this.callParent(arguments);
    }
    ,initialize:function() {
        var me = this;
        Ext.Function.defer(function(){
            console.log('Destroying after delay')
            me.destroy();
        }, 5000, me);
    }
});

Ext.application({
    name : 'Fiddle',
    ref:{
        cmp: 'mycmp'

    },

    launch : function() {
        Ext.Viewport.add({
            xtype:'mycmp'            
        });        
    }
})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Sencha Touch 中的自定义组件内进行自毁 的相关文章

  • 查询具有特定 xtype 的子组件

    有没有一种方法可以查询 xtype yourxtype 的子组件 例如 您有一个面板 该面板内部是位于工具栏上的自定义 xtype findParentByType 非常适合查找 但没有像 findChildByType 这样的方法 并且
  • 如何使 svg 元素(例如矩形)scrollIntoView?

    我在图形面板中有一个 svg svg 中的所有节点都在另一个面板中列出 我希望通过单击节点列表中的节点 svg 可以滚动到该节点 每个节点都是一个矩形 但我发现只有上边框在视图中 而节点的其余部分仍然在视图之外 有什么办法可以解决这个问题吗
  • 如何在 TreePanel 上拖放后触发事件

    如何使用 Ext tree ViewDDPlugin 的事件 我有一个使用 DDPplugin 的 TreePanel 但我想知道如何监听 drop 事件 这就是我的代码的样子 var monPretree Ext create Ext t
  • Extjs组合框:隐藏下拉列表中的选定值

    我正在使用 ExtJS 4 并寻找一种可以从组合的下拉列表中隐藏当前选定值的方法 因此 代替这个 当前在组合框中选择 阿拉斯加 我希望值列表如下所示 就我而言 组合框是不可编辑 即您不能输入任意值 我认为两次显示所选值没有多大意义 一次在输
  • EXTJS 中选项卡面板的单击侦听器

    我在 extjs 中使用选项卡面板 我想在单击选项卡时显示警报 但我不知道如何 这就是我现在所做的 xtype tabpanel activeTab 0 region center items xtype panel title All i
  • Extjs 5,数据模型关联和加载嵌套数据

    试图让这项工作 我想在两个对象模型上加载嵌套数据 Ext application name MyApp launch function Ext define MyApp model Address extend Ext data Model
  • Extjs - 如何在网格列中显示组合框

    我有一个网格面板 包括日期和组合列jsfiddle http jsfiddle net YjYqX 但我不想点击显示我的组合 我想在不点击的情况下显示我的组合 而不是像隐藏在单元格内一样 日期列也一样 我认为改变clicksToEdit 0
  • ExtJs 4,从容器中删除控件并将其从内存中删除的正确方法是什么?

    这个问题很简单 但我找不到一个好的 明确的答案 正确的方法是什么 从容器中删除控件 在 ExtJs 4 中将其从内存中删除 Ext AbstractContainer remove http dev sencha com deploy ex
  • ExtJS EditorGridPanel 中的级联组合框

    我有一个正在运行的 EditorGrid 面板 其中两列有 ComboBox 编辑器 两个组合框都是从数据库远程加载的 countryStore and cityStore 我想限制cityComboBox仅显示所选国家 地区的城市 我需要
  • 在 Ext JS 构造函数中将项目推入数组会产生多个项目

    我有一个我定义的 Ext JS 类 在这个班级的constructor 我将一个文本字段推送到我的项目数组上 然后添加到我的测试字符串中 数组和字符串在类定义中都声明为空 但是 如果您尝试创建多个类实例 您将看到项目数组在每个实例之间共享
  • Sencha-touch :保存登录名/密码(保存会话,多任务)

    我有一个 Java Web 应用程序 其中移动部分是用 Sencha touch 开发的 当我启动 sencha touch 应用程序时 她询问我的登录名 密码 因为该应用程序的访问受到限制 但是我想保存用户的登录名 密码 sencha t
  • 如何创建适用于 iPhone、iPad 和 Android 的 Extjs 应用程序?

    有人成功创建了适用于 iPhone iPad 和 Android 的 Extjs 应用程序吗 我知道 Sencha 不支持移动设备上的 Extjs 但我不想创建另一个仅针对移动设备的网站 我不需要奇特的移动界面 只需要基本的功能 我做了一些
  • 对于 android 系统,使用 Sencha Touch 或 Phonegap 哪一个更好? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Sencha Touch Label - 它有点击事件吗?

    我正在尝试使用 sencha touch 2 构建一个抽认卡应用程序 我有一个显示问题的标签 它占据了整个屏幕 我希望这样当用户点击标签时就会显示答案 标签有 点击 事件吗 当我使用按钮时它有效 但当我使用标签时则无效 另一种方法是我是否可
  • 树的子节点/节点上的单击事件

    我真的对 ExtJs 树对象感到困惑 我的代码有问题 但我不知道是什么 考虑我有这个代码 var store Ext create Ext data TreeStore root expanded true children text de
  • ExtJS4:从 Ext.Application 访问全局变量

    我想加载一些应用程序特定的设置 并在加载应用程序时将它们保存为全局变量 我找到了如何创建和访问全局变量here https stackoverflow com questions 11615277 setting and accessing
  • ExtJS GridPanel 中的垂直滚动条

    我正在开发一个项目 其中页面上有一个 GridPanel 该面板可以显示任意数量的行 并且我设置了 autoHeight 属性 这会导致 GridPanel 扩展以适合行数 我现在想要一个水平滚动条 因为在某些分辨率下 并非所有列都会显示
  • Extjs 4.0.7,编辑器网格 - 如何获取更新的单元格值?

    我需要在控制器中获取 检索 更新的单元格值 MVC 所以我尝试了这个 var modified this getItemGrid getStore getUpdatedRecords console log modified return
  • 突出显示 extjs4 折线图的一部分

    在 extjs 4 1 1a 中 下面的代码是折线图的工作示例 现在我需要在给定的最小和最大时间戳上突出显示该图表的一部分 xtype chart store ChartData height 100 width 100 legend po
  • 显示最后一条记录值,并非所有值都循环

    在下面的代码中 在 copyChild 和 insideModelRetrieved 函数中 在控制台 4 个功能上一一打印 但在下一个函数 onInnerModelRetrieved 4 次中打印最后一个功能值 我无法弄清楚为什么会发生这

随机推荐