プロジェクトに問題があります。私のアプリケーションは次のことを行います:
- スクリプト ファイルから情報を読み込みます。
- CodeMirror で編集する
- サーバーにセーブバック
Syntax Highlight に Twitter BootStrap Tabs と Code Mirror を使用しました。
次に行うこと: Tab Show の場合、コンテンツをファイルからテキストエリアにロードし、そこから CodeMirror Editor を作成する必要があります。しかし、試してみると、onShown イベントが発生するたびに CodeMirror オブジェクトのクローンが作成されます。
<!-- ==============================IWSSID-LUA-TAB======================================================-->
<div class="tab-pane fade" id="iwssid-lua-tab">
<div>
<button id="save-iwssid-code" class="btn btn-info" onclick="set_data('lua/iwssid.lua',$('#iwssid-lua-code').val())">Save</button>
<a href="lua/iwssid.lua" target="_blank" class="btn btn-success pull-right">Dowload File</a>
</div>
<br>
<form>
<div>
<textarea id="iwssid-lua-code" name="iwssid-lua-code"></textarea>
</div>
</form>
<script>
$(function () {
$('a[href="#iwssid-lua-tab"]').on('shown', function (e) {
post = get_data('lua/iwssid.lua');
$('#iwssid-lua-code').val(post);
var iwssid_editor = CodeMirror.fromTextArea(document.getElementById("iwssid-lua-code"), {
mode: "lua",
autofocus: true,
lineNumbers: true,
lineWrapping: true,
onCursorActivity: function() {
iwssid_editor.setLineClass(hlLine, null, null);
hlLine = iwssid_editor.setLineClass(iwssid_editor.getCursor().line, null, "activeline");
},
onBlur: function () {
iwssid_editor.save();
}
});
var hlLine = iwssid_editor.setLineClass(0, "activeline");
})
})
</script>
</div>
<!-- ==============================END OF IWSSID-LUA-TAB======================================================-->
set_data および get_data メソッド:
<script>
function get_data(file) {
var post;
$.ajax({
type: "POST",
async: false,
url: "filemanager.php",
data: { command: "get", filename: file }
}).done(function(msg ) {
post = msg;
});
return post;
}
function set_data(file, content) {
$.ajax({
type: "POST",
url: "filemanager.php",
data: { command: "set", filename: file, data: content }
}).done(function(msg ) {
alert("Done");
});
}
</script>
iwssid_editor = null
新しいものを作成する前にとを設定しようとしましdelete iwssid_editor
たが、成功しませんでした。私の間違いを説明してください。
ここに私の問題のスクリーンショットがあります