我使用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。
答案 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();
};
我的坏。这个疏忽让我醒了好几个小时。 编辑: 请参阅代码中的注释以找到我的更正