2012-05-13 2 views
10

건물중인 Webapp에 CodeMirror 인스턴스가 임베드되어 있습니다. 사용자가 새로운 캐릭터를 입력 할 때까지는 초기 내용이 표시되지 않는다는 점을 제외하고는 훌륭하게 작동합니다. 따라서 사용자가 변경을 강요 할 때까지 모든 것이 숨겨져 있지만 숨겨져 있습니다. 이것은 나쁘다. 공백 문자가 입력을 시뮬레이션하는 브라우저를 다시 그리거나 새로 고칠 수있는 방법이 있습니까? 여기 CodeMirror에는 내용이 있지만 키 누르기까지 표시되지 않습니다.

은 ... 코드입니다
<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> 

내용을 저장하고 텍스트 영역 내부에 저장된 내용을 표시하지만 사용자가 편집을 시작한 후에 만 ​​표시합니다 작업 편집기를 생산하는이

. 그 전에 그것은 단지 비어 있습니다.

아무 도움이 되더라도, 그냥 링크도 매우 높이 평가 될 것입니다. 고마워요! 당신이 CodeMirror 버전 2 +를 사용하는 경우 myCodeMirror에 때 .refresh 호출

UPDATE

Uncaught TypeError: Cannot call method 'focus' of undefined

답변

9

실제로 CodeMirror 인스턴스에서 refresh()을 호출해야합니다.

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

그것은 꽤 아니지만, 그것은 나를 위해 그것을 해결 : 그러나 때문에 공간 원숭이에 당신은 시간 제한에 새로 고침 호출을 포장해야합니다.

+0

나는 동일한 문제가 있었는데,이 문제를 해결하는 것처럼 보였다. 왜 이것이 효과가 있는지 아이디어가 있습니까? – Sarumanatee

+0

스페이스 원숭이가 setTimeout을 사용할 수 없습니다. 그것을 제거하는 것은 나를 위해 일했습니다. – Tk421

+1

"setTimeout"또는 이와 유사한 "get it"을 사용해야 할 때마다 Zalgo (믹싱 및 비동기 API 혼합) 릴리스로 인해 _usually_ (이 경우에는 확실하지 않음)입니다. 여기에 대한 자세한 내용은 http://blog.izs.me/post/59142742143/designing-apis-for-asynchronyy – papercowboy

3

코드 미러 5.14.2를 사용하여 명시 적으로 새로 고치면 코드를 올바르게 호출해야합니다 (this question 참조). autorefresh add on으로 제공된 코드 미러로 처리하는 것이 가장 쉽습니다.

관련 문제