Есть скрипт:
<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>
При переключении с таба на таб объект iwssid_editor дублируется каждый раз.
Вот так это выглядит:
Вынести создание объекта не хотелосьбы так тогда приется писать костыль для загрузки данных из textarea что не красиво.
Как можно при вызове функции уничтожить существующий объект iwssid_editor
Я пробовал делать iwssid_editor = null и delete iwssid_editor не получается
Может есть другое решение можей задачи.
Мне нужно чтобы при смене таба загружалось содержимое textarea из файла (для этого у меня есть методы get_data и set_data) и после этого создается экземпляр codemirror. Важно чтобы при изменении текста в codemirror он сохранялся в файл а при переключении табов тектс в 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======================================================-->
И вот такой метод для данных:
<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>