Donc, j'ai un contrôleur de connexion, vous pouvez cliquer sur Connexion avec la souris ou appuyez sur la touche Entrée, comme ceci:
Ext.define('My.controller.Login', { extend: 'Ext.app.Controller', init: function(application) { this.control({ "#idLogin button": {click: this.onButton}, "#idLogin form > *": {specialkey: this.onKey} }); }, onButton: function(button, e, eOpts) { var win = button.up('window'); // the login window //do more stuff... }, onKey: function (field, el) { if (el.getKey() == Ext.EventObject.ENTER) //ENTER key performs Login Ext.getCmp('#idLogin button').fireEvent('click'); } });
5 Réponses :
Vous devez utiliser la fonction FireEvent code> comme celle-là:
var myBtn = Ext.getCmp('#idLogin button');
myBtn.fireEvent('click', myBtn);
Merci: D Spot sur et très rapide @!
Pourquoi il n'y a pas de bouton .click () code>?
Parce que le bouton Cliquez sur l'événement est un événement synthétique tiré par le cadre. Il passe le long de l'instance de bouton et un objet d'événement. Donc, vous devez donc utiliser: P > Cependant, cela n'a pas vraiment de sens, vous n'ajoutez que d'une couche supplémentaire d'indirection. p> Pourquoi ne pas abstrait: p> FireEvent CODE> signifie "Notifier les abonnés que cet événement est arrivé, avec ces arguments", ne pas "déclencher un événement de clic sur le bouton sous-jacent".
bouton.fireevent ("cliquer sur", bouton); code> p>
Merci beaucoup pour une réponse détaillée! Indianer a battu à 60 secondes avec un court XD
La réponse est "fausse", vous ne devriez pas tirer un événement sur le bouton. Ce n'est pas la bonne façon de le faire.
Evant, il n'est pas agréable de prendre le "Accepter" de lui XD, mais je suis d'accord que vous êtes allé plus profondément dans la restructuration des fonctions de la meilleure pratique. Vous avez aplatiré les couches. J'aimerais pouvoir vous donner 10 ans et plus! ~
Je ne me soucie pas vraiment de la réponse acceptée, soulignez simplement que vous ne devriez pas utiliser cette approche dans votre propre code.
Comment le faire avec JS natif?
Utilisation:
var button= Ext.getCmp('#idLogin button'); button.fireHandler();
"FireHandler" est une fonction privée et ne doit pas être invoquée sur: docs.sencha.com/extjs/4.2.2 / #! / API / ...
une manière plus générale: testé sur ExtJS 4.2.6 p> acclamations p> p> p>
Ceci appellera la fonction de gestionnaire de votre bouton, dans mon cas, cela a fonctionné, du fait que je remplace ce gestionnaire de bouton avec des fonctionnalités et des paramètres supplémentaires changements ... (ExtJS 4.1.1)
Ext.getCmp('#idLogin button').handler();