ExtJS 4.1.
Existe-t-il quelque chose comme la méthode Ext.button.click();
sur la classe Ext.button?
Est-il possible de "cliquer" par programme sur un bouton avec une seule méthode?
Ou si vous avez une structure MVC, vous pouvez déclencher l'événement click du bouton, et si vous écoutez l'événement dans votre contrôleur et avez une fonction associée, il sera appelé.
button.fireEvent('click', button);
La dernière réponse sur ce forum pourrait vous donner plus d'informations sur la façon dont vous pouvez le faire ici, ils sont-
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();
de - http://www.sencha.com/forum/showthread.php?37772-Solved-Programmatically-click-an-Ext.Button
ExtJS 4.2.1
Ext.get('component-id-of-extjs-button').el.dom.click();
Ext.get('toggle-button2').el.dom.click();
travaille pour moi.
Dans le cas de boutons utilisant un gestionnaire, vous pouvez appeler directement la fonction de bouton.
Étant donné que button
est un composant Ext JS, vous pouvez utiliser:
button.handler(button);
ou si vous souhaitez accéder à une fonction d'événement 'clic':
button.listeners.click(button);
Cela fonctionnerait également pour appeler différents événements de bouton.
Comme j'en avais besoin pour de nombreux boutons, il était plus facile d'implémenter un remplacement sur la classe de bouton, ce qui ajoute une fonction de clic:
Ext.define('Ext.override.Button',{
override:'Ext.button.Button',
click:function() {
this.getEl().dom.click();
}
})
Une fois ce remplacement ajouté à la base de code, ce qui suit fonctionne comme un charme:
Ext.getCmp("MyButton").click()
Contrairement à fireEvent ou fireHandler, cela fonctionnera avec toutes sortes de boutons - qu'ils aient un événement de clic ou un gestionnaire, ou qu'ils soient des boutons à bascule où le bouton cliqué doit être marqué comme pressé également.
Si vous devez exécuter le "gestionnaire" du bouton, exécutez-le simplement (testé avec ExtJS 4.2)
button.fireHandler()
Aucune des autres réponses n'a fonctionné pour moi, mais j'ai trouvé quelque chose de plus simple je pense:
var button=Ext.get('the_id_div');
button.dom.click();
document.getElementById("someButtonId").click();
Si vous voulez le faire dans vos scripts de test, jetez un œil à ma bibliothèque Ext.ux.Test . Si vous en avez besoin pour autre chose, je vous suggère de reconsidérer votre approche.