如何在 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 中的自定义组件内进行自毁 的相关文章

  • Extjs - 带有子菜单的工具栏按钮菜单下拉列表。这是可能的?

    我已经完成了一个带有带有下拉菜单的按钮的工具栏 但我需要更多的子菜单级别 可以这样做吗 例子 工具栏按钮 gt 菜单 1 级 1 菜单 2 LV 1 menu 3 lv 1 gt 子菜单 1 lv 2 子菜单 2 lv 2 菜单 4 LV
  • 动态传递参数

    我正在尝试使用 ExtJS 4 将图像从数据库检索到数据视图 现在我需要动态传递参数 主要是这里 Ext define pkgName v02x003001 SV02X00300102 extend Ext view View alias
  • extjs 树面板上下文菜单不起作用

    var menu1 new Ext menu Menu items text Open in new tab var treePanel Ext create Ext tree Panel id tree panel region cent
  • 如何使 svg 元素(例如矩形)scrollIntoView?

    我在图形面板中有一个 svg svg 中的所有节点都在另一个面板中列出 我希望通过单击节点列表中的节点 svg 可以滚动到该节点 每个节点都是一个矩形 但我发现只有上边框在视图中 而节点的其余部分仍然在视图之外 有什么办法可以解决这个问题吗
  • 如何使用带有数据绑定的 Ext5 组合框

    我想使用一个组合框 它从数据绑定接收预选值 并且还从同一存储的数据绑定接收可能的选项 面板项配置如下所示 xtype combobox name language default fieldLabel Default Language mu
  • 带代理的 extjs 树存储

    我正在创建一个 MVC extjs 应用程序 我有一个带有商店的树面板 它正在从 php 源加载数据 我收到以下 json 格式的响应 text Home leaf true dbName NULL children text Moje F
  • 如何在 TreePanel 上拖放后触发事件

    如何使用 Ext tree ViewDDPlugin 的事件 我有一个使用 DDPplugin 的 TreePanel 但我想知道如何监听 drop 事件 这就是我的代码的样子 var monPretree Ext create Ext t
  • Extjs 4(下面有3.4的代码)下载从post请求返回的文件

    我看到了与此略有相关的问题 但没有一个能回答我的问题 我设置了 Ext Ajax request 如下 var paramsStringVar param1 1 param2 two param3 something param4 etc
  • 如何在 ExtJS 4 中隐藏选项卡

    如何在 ExtJS 4 中隐藏选项卡 Ext getCmp mytab hide 不起作用 谁能帮我 阅读此处的文档 http docs sencha com ext js 4 0 api Ext tab Panel http docs s
  • 单击父节点时检查树的子节点 [ExtJS]

    我想知道如何在单击 ExtJs 中的特定节点时检查树的同级节点 我已经给了每个节点的 id 我可以访问单击的节点的 id 那么我如何继续自动检查子节点 有人请帮助我 or any other way of getting hands on
  • 将 Flex 值动态添加到 extjs 中的控制器

    我在 视图 中给出了一些项目 容器 布局为hbox 现在我想给flex通过 控制器 为每个项目赋予值 我怎样才能做到这一点 我已经浏览了文档 但找不到任何类似的方法setFlex EDIT Ext apply Ext getCmp IdHe
  • 如何使用phoneGap 和Sencha Touch 2 通过android 拨打设备电话?

    我需要通过 android PhoneGap 应用程序使用 sencha 触摸按钮拨打电话 我找到了一个 iphone 插件 可以从phoneGap 应用程序拨打电话 我还没有找到任何适用于 Android 的插件或任何东西 请帮忙 提前致
  • store.sync() 回调

    store sync 有回调吗 我正在尝试这样做 store sync function alert 1 但它不起作用 这家店是当地的一家店 sync 没有 回调 为了实现此行为 您需要监听存储的写入事件 查看这个解决方案 https st
  • 删除在网格 ExtJS 4 中选择特定行的功能

    我必须删除在网格中选择某些行的功能 我使用复选框模型 selModel Ext create Ext selection CheckboxModel mode SIMPLE 要禁用选择 我使用 beforeselect 事件 befores
  • Extjs中始终显示Slider的提示文本

    在 Extjs 4 1 1a 中 如何保持tip text滑块始终可见 目前 tip text每当用户拖动滑块栏时就可见 我搜索了docs http docs sencha com ext js 4 0 api Ext slider Sin
  • AJAX Webmethod 调用在 MVC3 上返回 404

    我一直在使用 EXTJS 4 并通过 AJAX 调用 aspx 页面代码隐藏上的 Webmethod 来加载我的商店 此方法适用于我的所有项目 直到我尝试将 EXTJS 4 工作移植到 MVC3 项目中 我的电话现在返回 404 关键部分是
  • ExtJS EditorGridPanel 中的级联组合框

    我有一个正在运行的 EditorGrid 面板 其中两列有 ComboBox 编辑器 两个组合框都是从数据库远程加载的 countryStore and cityStore 我想限制cityComboBox仅显示所选国家 地区的城市 我需要
  • Sencha-touch :保存登录名/密码(保存会话,多任务)

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

    有人成功创建了适用于 iPhone iPad 和 Android 的 Extjs 应用程序吗 我知道 Sencha 不支持移动设备上的 Extjs 但我不想创建另一个仅针对移动设备的网站 我不需要奇特的移动界面 只需要基本的功能 我做了一些
  • 无法加载所需框架:extjs 中的 ext@null

    设置 extjs 和 sencha 当我运行应用程序时出现错误无法加载所需的框架 root samuel pc Documents code test sencha app watch Sencha Cmd v6 5 0 180 ERR U

随机推荐