如何将自动扩展添加到ace编辑器

时间:2013-05-15 14:58:53

标签: javascript jquery

我使用ace编辑器,当用户输入长于当前大小时,我无法将其修改为autoexpand: 这是我当前的方式(它有一个shift + enter的处理程序),它不起作用。

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;
};

我怎么能让它上班?这个当前的代码没有。 我如何访问调用高度更新的对象? (或包含ace编辑器的div的“id”,因为我有几个,每个都可以通过

访问
a.inpid

给定的

a = new Typist() 

我的尝试来自阅读this similar kind of problem我不想这样,因为我将在页面上有几个王牌编辑器,我需要知道应用高度调整的那个的ID。

1 个答案:

答案 0 :(得分:1)

原来我错过了一些简单的事情

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();
       };

我的坏。这个疏忽让我醒了好几个小时。 编辑: 请参阅代码中的注释以找到我的更正