2013-05-15 5 views
2

im en utilisant l'éditeur d'as et je suis incapable de le modifier pour autoexpand lorsque l'entrée de l'utilisateur est plus grande que la taille actuelle: voici comment je l'ai actuellement (il a un gestionnaire pour Maj + Entrée), et cela ne fonctionne pas.comment ajouter un expandeur automatique à l'éditeur

Typist.prototype.heightUpdateFunction = function() { 
      var newHeight = 
       ac.getSession().getScreenLength() 
       * ac.renderer.lineHeight 
       + ac.renderer.scrollBar.getWidth(); 
      $(settings.id).height(newHeight.toString() + "px"); 
      ac.resize(); 
      }; 

Typist.prototype.createinput = function(settings,handler) { 
    var that = this; 
    var $typepad = $("<div/>" ,{ 
      id : settings.id, 
      }).css({position:'relative', height: '40px'}) ; 
    $(that.place).append($typepad); 
    var ac = ace.edit(settings.id); 
    ac.commands.addCommand({ 
      name : 'catchKeys', 
      bindKey : { win : 'Shift-Enter', mac : 'Shift-Enter' }, 
      exec : function (ac) { 
      if (typeof handler === "function") { 
        handler(ac); 
       } 
      }, 
      readOnly : false 
      }); 
    that.heightUpdateFunction(); 
    ac.getSession().on('change', that.heightUpdateFunction); 

    return true; 
}; 

Comment puis-je le faire fonctionner? ce code actuel ne fonctionne pas. Comment accéder à l'objet qui a appelé la mise à jour de la hauteur? (Ou « id » de la div contenant l'éditeur ace, car j'ai plusieurs, chacun avec un id accessible par

a.inpid 

donné

a = new Typist() 

ma tentative vient de la lecture this similar kind of problem je ne veux pas aller de cette façon parce que je vais avoir plusieurs éditeurs ace sur la page, et j'ai besoin de connaître l'identité de celui d'appliquer le réglage de la hauteur.

Répondre

1

se révèle j'ai raté quelque chose de simple

Typist.prototype.heightUpdateFunction = function() { 
     var newHeight = 
      ac.getSession().getScreenLength() 
      * ac.renderer.lineHeight 
      + ac.renderer.scrollBar.getWidth(); 
     $("#"+settings.id).height(newHeight.toString() + "px"); // i forgot $() needs '#' 
     ac.resize(); 
     }; 

mon mauvais. Cette omission m'a gardé éveillé pendant des heures. EDIT: voir le commentaire dans le code pour trouver ma correction

Questions connexes