Ext.getElementById在Ext.Controller init或onLaunch事件中不起作用

时间:2012-07-08 13:35:14

标签: javascript extjs extjs4 extjs-mvc extjs4.1

我从应用程序代码的特定部分调用了以下Ext.getElementById,在此上下文中调用时可以正常工作:

init: function() {
    // template method called when app boots; before Viewport is created

    this.control({
        'launcherlist': {
            itemclick: function (dataView, record) {
            Ext.getElementById('element-id');
         },
    }
    ...
}

但是我需要在更早的阶段调用getElementById ,然后才会发生任何用户触发的事件

init内直接调用getElementById时,它不起作用,因为在应用启动时会调用init;在创建视口之前。

所以我决定覆盖控制器的onLaunch事件,因为onLaunchinit之类的模板方法,但在创建视口后调用:

onLaunch: function() {
    Ext.getElementById('element-id');
},

然而,这也不起作用。

TL / DR

在任何用户触发操作发生之前,我可以在哪里进行工作 Ext.getElementById来电?

2 个答案:

答案 0 :(得分:3)

您可能想解释一下您要做的事情。 getElementById是一个“私有”方法,你不应该真正调用它。如果您想通过id获取元素,请使用Ext.get。

答案 1 :(得分:0)

<强>解决方案:

由于渲染我正在寻找的DOM元素的窗口小部件扩展为Ext.view.View,因此 Ext.get之后可以实际找到渲染元素的正确事件是{{ 1}}事件。

P.S。一个人应该使用viewready而不是Ext.get,因为后者是私有方法。