CodeMirror имеет контент, но не будет отображаться до нажатия клавиши

У меня есть экземпляр CodeMirror, встроенный в webapp, который я создаю. Он отлично работает – за исключением того, что исходный контент не будет отображаться, пока пользователь не вводит новый символ. Таким образом, все это скрыто, пока пользователь не внесет изменения. Это плохо. Есть ли способ заставить перерисовать или обновить браузер симулировать ввод символов – пробелы.

Вот код …

<textarea id='code-mirror' ><?php echo $contents; ?></textarea> <script> jQuery(document).ready(function(){ var textarea = document.getElementById('code-mirror'); var myCodeMirror = CodeMirror.fromTextArea(textarea, { onUpdate:codemirrorcallback, }); // myCodeMirror.refresh(); ? is this an option? }); </script> 

Это создает рабочий редактор, который сохраняет содержимое и отображает сохраненное содержимое внутри текстовой области, но ТОЛЬКО отображает его после того, как пользователь начинает его редактировать. До этого он просто пуст.

Любая помощь, даже ссылки будут высоко оценены. Спасибо, парни!

ОБНОВИТЬ

Вызов .refresh на myCodeMirror печатает ошибку в консоли Chrome Uncaught TypeError Uncaught TypeError: Cannot call method 'focus' of undefined

Вам действительно нужно вызвать refresh() в вашем экземпляре CodeMirror, если это происходит. Но из-за космических обезьян вам нужно будет обернуть вызов обновления в тайм-аут:

 var editor = CodeMirror.fromTextArea( yourSourceDOM, { lineNumbers:true }) setTimeout( editor.refresh, 0 ) 

Это некрасиво, но это решило это для меня.

Используя зеркало кода 5.14.2, если вы явно обновляете, вы должны позаботиться о его правильном вызове (см. Этот вопрос ), но его легче всего обработать с добавленным дополнением autorefresh, включенным codemirror.

Если вы используете CodeMirror версии 2+, вы можете вызвать CodeMirror.refresh() . См. Документацию по refresh() .

Примечание. Это нужно вызвать в экземпляре CodeMirror, а не в элементе. См. https://stackoverflow.com/a/5377029/526741