2010-09-22 2 views
1

Lorsque je réinitialise un formulaire dans Ext.js, il réinitialise tous les composants enfants, mais les seuls événements déclenchés sont invalid et valid. Il semble un peu "hacky" de les accrocher pour gérer la compensation d'une valeur, n'y a-t-il pas d'autre moyen? Le « domaine de problème » est que je suis en train d'écrire un plugin pour créer comboboxes dépendants:N'y at-il vraiment aucun moyen de se connecter à l'événement de réinitialisation d'un composant Ext.js?

Ext.plugins.combobox.DependsOn = function(dependsOn) { 
    function init() { 
     var cb = this, 
      parent = Ext.getCmp(dependsOn); 

     parent.on("disable", function() { 
      cb.clearValue(); 
      cb.disable(); 
     }); 

     parent.on("select", function() { 
      cb.disable(); // dependents will be disabled 
      cb.clearValue(); 

      cb.getStore().load(); 
      cb.enable(); 
     }); 

    } 
    return { 
     init: function(cb) { 
      cb.afterRender = cb.afterRender.createSequence(init); 
     } 
    } 
}; 

Cela fonctionne bien jusqu'à ce que j'appelle form.reset() à quel point les comboboxes restent activés mais vide. Je voudrais être en mesure d'accrocher un événement reset et là désactiver et activer mon composant supérieur pour cascader un état désactivé vers le bas. Hélas, cela semble impossible mais j'espère que quelqu'un a une réponse intelligente.

Merci.

Répondre

1

En supposant que "parent" est un champ Ext.form.Field, vous pouvez utiliser createSequence sur parent.reset.

parent.reset = parent.reset.createSequence(function(){ 
    //here, do what you would have done with parent.on('reset', ...) 
}); 
+0

ah, oui. Je n'y ai pas pensé. Cela ressemble un peu à un hack, mais je suppose que c'est la seule façon d'accomplir ce que j'ai demandé. Merci! – einarmagnus

Questions connexes