我的项目有问题。我的应用程序执行以下操作:
- 从脚本文件加载信息。
- 使用 CodeMirror 进行编辑
- 保存回服务器
我已经使用 Twitter BootStrap Tabs 和 Code Mirror 进行语法高亮。
我接下来要做的是:当 Tab Show 时,我需要将内容从文件加载到 textarea,然后从中创建 CodeMirror Editor。但是,当我尝试时,每次 onShown 事件触发时我都会克隆 CodeMiror 对象。
<!-- ==============================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
and delete iwssid_editor
,但没有成功。请解释我的错误。
这是我的问题的屏幕截图