Bor*_*rov 6 javascript ace-editor
我怎么能等待渲染编辑器
editor = ace.edit("editorId");
editor.setValue(myCode, pos);
Run Code Online (Sandbox Code Playgroud)
不幸的是,ace编辑器没有'onload'事件.我正在尝试使用'change'事件,但是这个事件会多次触发,并且在渲染html之前最后一次触发.
editor.on('change', function changeListener() {
if(isCodeInserted) {
//do something
editor.removeEventListener('change', changeListener);
}
});
Run Code Online (Sandbox Code Playgroud)
这似乎是编辑器滚动功能中的一个错误,它不会检查编辑器和字体大小缓存是否是最新的.
您可以调用ace.resize(true)强制同步重新渲染.(注意:不要经常使用此功能,因为它很慢)
实际上,您可以:
[TL; DR]:
editor.renderer.on('afterRender', function() {
// Your code...
});
Run Code Online (Sandbox Code Playgroud)
Ace API不会显示所有事件,但您可以在其repo上使用"_signal"关键字搜索它们.
更详细的是,这是他们的代码中发布"afterRender"事件的行: "this._signal("afterRender");"
在片段中,我在渲染后获得布局配置,请看一下.
var editor = ace.edit("anEditor");
editor.renderer.on('afterRender', function() {
let config = editor.renderer.layerConfig;
console.log("afterRender triggered " + JSON.stringify(config));
});Run Code Online (Sandbox Code Playgroud)
#anEditor {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajaxorg.github.io/ace-builds/src-min-noconflict/ace.js"></script>
<pre id="anEditor">
function helloWorld(){
return "Hello, World!"
}
</pre>Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4015 次 |
| 最近记录: |