취업 면접 질문에 대한 약간의 프로젝트를 만들고이 질문에 대한 답변과 코드 예제를 페이지에 표시하려고합니다. 각각은 Materialize.css의 .collapsible div 안에 있으며, 클릭하면 대답과 코드 예제가 표시됩니다.동일한 페이지에 CodeMirror 텍스트 영역의 여러 인스턴스
이 문제를 해결하는 가장 좋은 방법은 무엇입니까? 나는 이니셜 라이저를 함수에 넣고 DOM을 구성하는 모든 텍스트 영역을 잡아서 루프를 반복하여 CodeMirror 텍스트 영역으로 변환했습니다.
$(document).ready(function(){
var blocks = document.getElementsByClassName('code-block');
function createEditorFrom(selector) {
let editor = CodeMirror.fromTextArea(selector, {
lineNumbers : false,
mode: "swift",
});
}
for (var x = 0; x < blocks.length; x++) {
createEditorFrom(blocks[x]);
}
// Callback for Collapsible open
$('.collapsible').collapsible({
onOpen: function() {
// call editor.refresh()?
},
});
});
이것은 작동하지만이 문제를 해결하는 매우 우아한 방법이 아닌 것 같습니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?
질문 :
- 모든 CodeMirror의 텍스트 영역을 만들 수있는 더 좋은 방법이 있나요?
- 편집자의 코드는 클릭 할 때까지 표시되지 않습니다. 내가하는 일로 그게 효과가 없지. editor.refresh() (setTimeout) 및 autorefresh : true를 호출합니다. 당신이 어쨌든해야 할 것
몇 가지. 1) 텍스트 영역에 대한 참조는 레일즈 애플리케이션에서 동적으로 렌더링되기 때문에 참조 할 필요가 없습니다. 2) 코드를 표시하기 위해 텍스트 영역을 클릭해야하는 것에 대한 귀하의 대답은 제 상황에는 도움이되지 않지만 도움을 주셔서 감사합니다.3) 접을 수있는 문이 열렸을 때 초기화 작업을 실제로 생각하지 않았습니다. 그래서 내가 취한 경로가 그 덕분입니다. –
@ TaylorA.Leach ah 2) 시도해 볼 가치가있었습니다. 1)의 경우,'CodeMirrorinstance.getValue()'로 편집 한 후 데이터를 저장해야 할 때 ref를 필요로하거나 무언가를 놓친다. – Tyblitz
내 상황에서 getValue()를 사용하지 않는다. 내용은 실제 텍스트 영역의 레일에 동적으로 생성됩니다. –