【问题标题】:Ext.button click() methodExt.button click() 方法
【发布时间】:2012-08-08 12:16:40
【问题描述】:

ExtJS 4.1.

Ext.button 类上有类似Ext.button.click(); 的方法吗?

是否可以通过一种方法以编程方式“单击”按钮?

【问题讨论】:

  • 对不起,如果这是一个愚蠢的问题,但你确定你使用的是 ExtJS 1.1 吗?只是ExtJS 2现在不支持很久了,所以你使用1.1似乎很奇怪;
  • 不敢相信这么受欢迎的活动不是这个框架的一部分!结束了尴尬的button.getEl().dom.click()

标签: extjs extjs4.1


【解决方案1】:
 document.getElementById("someButtonId").click(); 

【讨论】:

    【解决方案2】:

    由于很多按钮都需要它,所以在按钮类上实现覆盖会更容易,它会添加点击功能:

    Ext.define('Ext.override.Button',{
        override:'Ext.button.Button',
        click:function() {
            this.getEl().dom.click();
        }
    })
    

    将此覆盖添加到代码库后,以下内容就像一个魅力:

    Ext.getCmp("MyButton").click()
    

    与 fireEvent 或 fireHandler 不同,这适用于所有类型的按钮 - 无论它们是否具有单击事件或处理程序,或者它们是否是切换按钮,所单击的按钮也必须标记为已按下。

    【讨论】:

      【解决方案3】:

      其他答案都不适合我,但我发现了一些我认为更简单的方法:

      var button=Ext.get('the_id_div');
      button.dom.click();
      

      【讨论】:

        【解决方案4】:

        如果您需要执行按钮的“处理程序”,只需运行它(使用 ExtJS 4.2 测试)

        button.fireHandler()
        

        【讨论】:

          【解决方案5】:

          ExtJS 4.2.1

          Ext.get('component-id-of-extjs-button').el.dom.click();
          Ext.get('toggle-button2').el.dom.click();
          

          为我工作。

          【讨论】:

            【解决方案6】:

            如果按钮使用handler,可以直接调用按钮的函数。

            考虑到button是一个Ext JS组件,你可以使用:

               button.handler(button); 
            

            或者如果你想达到事件“点击”的功能:

               button.listeners.click(button);
            

            这也可以调用不同的按钮事件。

            【讨论】:

              【解决方案7】:

              或者,如果你有一个 MVC 结构,你可以触发按钮的点击事件,如果你在你的控制器中监听事件并且有一个相关的函数,它将被调用。

              button.fireEvent('click', button);
              

              【讨论】:

              • 当您使用处理程序而不是单击侦听器时,您将无法在该组件上触发Event('click'),事件不会执行。所以最好的方法是不使用handler,而是使用点击监听+button.fireEvent('click');模拟clicking
              • 没错。在我看来,使用监听器总是“更干净”。
              • 仅供参考,由于某种原因,它不会触发处理程序方法。如果该处理程序方法是按钮配置的一部分。
              • 当按钮被禁用时,点击事件是否仍然引发?因为它会强制您测试 disabled 属性以启动相关功能...
              • 它仍然会被解雇是的。
              【解决方案8】:

              如果您想在测试脚本中执行此操作,请查看我的Ext.ux.Test library。如果您需要它来做其他事情,我建议您重新考虑您的方法。

              【讨论】:

                【解决方案9】:

                本论坛上的最后一个答案可能会让您更深入地了解如何做到这一点 他们在这里-

                1)Create the event code in a function and call the function from both sides: btn.on("clic", ...) and from the code you want to simulate the click.
                
                2)Use: btnView.btnEl.dom.click();
                

                来自 - http://www.sencha.com/forum/showthread.php?37772-Solved-Programmatically-click-an-Ext.Button

                【讨论】:

                • 不要认为您链接的煎茶论坛主题是真实的(2008 年)。但是在 DOM 元素上调用 click() 的想法很好!
                • 什么是dom.click();?它从哪里来的?
                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2021-11-21
                • 1970-01-01
                • 2016-10-17
                • 2011-03-03
                • 1970-01-01
                • 1970-01-01
                • 2018-02-07
                相关资源
                最近更新 更多