【问题标题】:How to trigger Click event after associated interface has loaded for the first time only?仅在关联界面第一次加载后如何触发 Click 事件?
【发布时间】:2020-12-09 08:51:32
【问题描述】:

我想确保某个界面已加载并显示,然后我才能触发该界面中包含的按钮上的单击事件。

我正在使用以下代码创建界面:

   var mainV2 = Ext.create('widget.main', {
            renderTo: Ext.getBody(),
            hideMode: 'visibility',
           //Update
            listeners: {
              afterrender: function() {
                Ext.getCmp('#somebutton').fireEvent('click');
                        }
                 }
        });

        mainV2.show();

并在上述代码下触发事件

Ext.getCmp('#idcheckItem').fireEvent('click');

但似乎 fireEvent 并没有影响按钮侦听器的。我在想,因为调用应该是同步的。

我的问题是如何确保mainV2 仅在首次调用并显示mainV2 时才在按钮上触发点击事件之前加载?

感谢您的大力帮助。

【问题讨论】:

    标签: extjs extjs5


    【解决方案1】:

    您可以在面板控制器中创建 afterRender 方法。

    Here is a fiddle

    这个小提琴在窗口被渲染后触发一个按钮点击事件。 请务必将 afterRender 方法放在控制器中。直接放在面板上的时候遇到了一些麻烦。

    【讨论】:

    • 是否可以在mainV2面板的afterRender上做一个监听器?
    • 请参阅编辑:我希望事件仅在面板首次显示时触发。
    • afterRender 在经典工具包中的组件和现代工具包中的小部件上。因此,任何扩展这些方法的东西都可以创建 afterRender 方法。 afterRender 只被调用一次,所以事件只会被触发一次。
    • 我不明白是否可以将 afterRender 添加为侦听器(如我的编辑中所示),而不是像您提到的那样在控制器中创建方法?
    • 容器上没有 afterrender 事件,所以我认为这不会起作用。话虽如此,在渲染组件之后,框架会调用此方法。所以它就像一个 afterRender 事件,我猜。我不明白为什么我的建议不起作用。你能把你的代码放在一个小提琴里,告诉我它没有做什么吗?
    猜你喜欢
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    相关资源
    最近更新 更多