【问题标题】:Ext JS weird behaviour when extending Ext.Toolbar.TextItemExt JS 扩展 Ext.Toolbar.TextItem 时的奇怪行为
【发布时间】:2012-06-14 08:24:56
【问题描述】:

我正在尝试扩展 Ext.Toolbar.TextItem 以创建一个简单的时钟。 这样做的目的是能够在我的应用程序的状态栏中添加时钟。 我的扩展类如下所示:

Ext.define('Urlopy.Components.TimeDisplay', {
    extend : 'Ext.Toolbar.TextItem',
    initComponent : function() {
        var me = this;

        var dt = new Date();

        Ext.defer(this.onUpdate, 240, this);

        Ext.apply(me, {
            text : Ext.Date.format(dt, "Y-m-d H:i:s")
        });
        delete dt;
        this.callParent(arguments);
    },

    onUpdate : function(obj) {
        var dt = new Date();
        this.setText(Ext.Date.format(dt, "Y-m-d H:i:s"));
        delete dt;
        Ext.defer(this.onUpdate, 240, this);
    }
});

我不确定我这样做是否正确,在我尝试折叠面板之前它可以正常工作。我的布局基于 Ext.container.Viewport。

这是我得到的错误:http://vimeo.com/43978383

我不知道怎么了:(

欢迎任何帮助!

更新

这是我更新的组件:

Ext.define('Urlopy.Components.TimeDisplay', {
    extend : 'Ext.Toolbar.TextItem',
    initComponent : function() {
        this.callParent(arguments);
        //this.setText(Ext.Date.format(new Date(), "Y-m-d H:i:s"));
        Ext.defer(this.onUpdate, 240, this);
    },
    onUpdate : function(obj) {
        //this.setText(Ext.Date.format(new Date(), "Y-m-d H:i:s"));
        Ext.defer(this.onUpdate, 240, this);
    }
});

这现在有效,但是当我取消注释负责更新文本的 2 行时,所有崩溃:/

我收到此错误

el 未定义
var id = el.id,

【问题讨论】:

  • 尝试使用 Firefox 或 chrome 进行调试。这将帮助你更好。
  • @AbdelOlakara 我试过了,但没有运气,不知道发生了什么。你能帮我解决这个问题吗:stackoverflow.com/questions/11030477/…,基本相同,但方法不同。
  • 你能用 console.log(this.rendered) 替换注释行吗?告诉我们会发生什么?
  • 如果你用 console.log(this.isHidden()); 替换注释行,你会得到什么;
  • 当我记录(this.rendered)时我得到了真实,isHidden() 记录为假。 Vimeo 链接显示只有当我尝试折叠面板时才会崩溃:/ 奇怪...

标签: extjs extjs4.1


【解决方案1】:

你能试试这个并告诉我们它是否仍然崩溃?

    Ext.define('Urlopy.Components.TimeDisplay', {
        extend : 'Ext.Toolbar.TextItem',
        initComponent : function() {
            this.callParent(arguments);
            Ext.defer(this.onUpdate, 240, this);
        },
        onUpdate : function(obj) {
            console.log('tock');
            Ext.defer(this.onUpdate, 240, this);
        }
    });

【讨论】:

  • 如果你用console.log(this)替换console.log('tock'),会发生什么?
  • 它可以工作,在萤火虫中它会抛出对象和所有属性。我看起来只有在更新计时器时才会出错。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
相关资源
最近更新 更多