2015-05-16 64 views
2

我試圖在隱藏容器塊時設置ace編輯器內容。如何在容器塊隱藏時設置ace-editor內容?

我不能相同。

這裏是我努力 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

正在設置該值,但編輯器未更新。所以你必須使用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,則不會有延遲。

+0

我確實考慮你的答案,但我正在尋求更好的答案。這將在ace中進行一些內部配置。我不想手動調用'updateFull'。 – codeofnode