我正在尝试在隐藏容器块时设置ace编辑器内容。
我无法做到这一点。
这是我正在尝试的 http://jsfiddle.net/U5JtP/408/
这是我的代码:
var editor = ace.edit("editor");
editor.setTheme("ace/theme/monokai");
editor.getSession().setMode("ace/mode/javascript");
$('#hide').click(function(){
$('.panel-body').hide();
$('#hide').hide();
$('#Show').hide();
$('#setValue').show();
});
$('#Show').click(function(){
$('.panel-body').show();
$('#setValue').hide();
$('#Show').hide();
$('#hide').show();
});
$('#setValue').click(function(){
editor.getSession().setValue('function foo(items) {}');
$('.panel-body').hide();
$('#setValue').hide();
$('#Show').show();
$('#hide').hide();
});
////// -------------------------- Click on Hide -> SetValue -> Show
/// Why ace editor did not updated the content and how to update in such scenario?
你能做到这一点吗?
答案 0 :(得分:1)
正在设置该值,但编辑器未更新。因此,您必须使用updateFull()
which is a method of ace editor's VirtualRenderer手动调用它。
这就是调用方法的方法
editor.renderer.updateFull();
将setValue方法更新为类似
的方法$('#setValue').click(function(){
editor.getSession().setValue('function foo(items) {}');
editor.renderer.updateFull();
$('.panel-body').hide();
$('#setValue').hide();
$('#Show').show();
$('#hide').hide();
});
以下是更新的演示 http://jsfiddle.net/dhirajbodicherla/U5JtP/410/ ;
PS:如果在#setValue
点击处理程序中使用了updateFull,我发现更新编辑器有一点延迟。如果在#show
点击处理程序中使用了updateFull,则没有延迟。
答案 1 :(得分:1)
我解决了这个问题。显示编辑器块后,应该只设置一个新值和updateFull()。然后它将正常工作。我有同样的问题,但是我尝试过这种方法。现在可以使用
$('#setValue').click(function(){
$('.panel-body').hide();
$('#setValue').hide();
$('#Show').show();
$('#hide').hide();
editor.getSession().setValue('function foo(items) {}');
editor.renderer.updateFull();
});