У меня проблема в моем проекте. Мое приложение выполняет следующие действия:
- Загрузить информацию из файлов скриптов.
- Редактировать с помощью CodeMirror
- Сохранить обратно на сервер
Я использовал вкладки Twitter BootStrap и зеркало кода для подсветки синтаксиса.
Я делаю следующее: при показе вкладок мне нужно загрузить содержимое из файла в текстовую область, а затем создать из него редактор CodeMirror. Но когда я пытаюсь, у меня клонируется объект CodeMiror каждый раз, когда срабатывает событие onShown.
<!-- ==============================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
перед созданием нового, но безуспешно. Пожалуйста, объясните мне мои ошибки. Вот скриншот моей проблемы