3

我正在使用 ace 编辑器,并且当用户输入长于当前大小时,我无法将其修改为自动扩展:这是我目前拥有的方式(它有一个 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”,因为我有几个,每个都有一个 id 可通过

a.inpid

给定

a = new Typist() 

我的尝试来自阅读这种类似的问题,我不想那样做,因为我将在页面上有几个 ace 编辑器,我需要知道要应用高度调整的那个的 id。

4

1 回答 1

2

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

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

我的错。这个遗漏让我醒了好几个小时。编辑:查看代码中的注释以找到我的更正

于 2013-05-15T18:52:41.780 回答