私は就職に関する質問のためのプロジェクトを少し作っており、そのページに回答とコード例を載せています。それぞれは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のテキストエリアを作成するための良い方法はありますか?
- 編集者のコードは、クリックするまで表示されません。私はそれを働かせるものは何もありません。 (setTimeoutを指定して)editor.refresh()を呼び出し、autorefresh:trueを呼び出します。あなたはとにかく行う必要があります
いくつかのものがあります。 1)私はRailsアプリケーションで動的にレンダリングされるため、テキストエリアへの参照は必要ありません。 2)コードを表示するためにテキストエリアをクリックしなければならないというあなたの答えは、私の状況では役に立たなかったが、助けに感謝する。3)私は折り畳み式の開けたときにそれらを初期化することについて本当に考えなかった。 –
@ TaylorA.Leach ah 2)は試してみる価値がありました。 1)の場合、 'CodeMirrorinstance.getValue()'で編集した後にデータを保存する必要がある場合や、何かが見つからない場合にrefを必要とします。 – Tyblitz
私の状況でgetValue()を使用していません。コンテンツは、実際のテキストエリア内のレールで動的に生成されます。 –