在使用codemirror时,
其原理是根据form中的textarea标签,自动加载其内容,获得代码行的显示。(具体使用方式参见 codemirror官网使用手册 http://codemirror.net/doc/manual.html)
优点显而易见,
在codemirror中,修改了一部分代码,在form表单提交时,codemirror会自动调用其内部的save()方法,将codemirror中的新值,更新至textarea中,进行表单提交。
然而当我们用js动态加载文件,修改后对文件进行保存时出现了出乎意料的情况。
<script> var editor = null; function loadfile(){ var fileName = $('#file-selector').val(); $.get("/load-file?file-name=" + fileName, function(data) { $('#lispcode').empty(); $('#lispcode').text(data); $('.CodeMirror').remove(); editor = CodeMirror.fromTextArea(document.getElementById(\"lispcode\"), {lineNumbers: true}); }); } </script> <form> <select id="file-selector" onchange="loadfile()"> <option>1</option> <option>2</option> </select> <textarea id="lispcode">xxx</textarea> </form> <script>editor = CodeMirror.fromTextArea(document.getElementById("lispcode"), {lineNumbers: true}); </script> //写在textarea之后,加载textarea内容
上述动态load文件的代码可以正常显示,但是load过后,修改代码仍然提交的是原来第一次load出来文件的代码。
问题原因: 修改的代码没有正常更新到textarea,以至于form提交时,仍然更新的是原来的旧值。
分析:1. 上述代码在动态load文件内容时,会生成一个新的codemirror实例,但是在form提交时,仍然使用的是初始对象的value值。
思路:1. 由于codemirror在初始化时,会创建一个实例,所以重新加载时考虑销毁旧实例,创建新实例。
解决方案:
editor.toTextArea(); $('#lispcode').empty(); $('#lispcode').text(data); $('.CodeMirror').remove(); editor = CodeMirror.fromTextArea(document.getElementById(\"lispcode\"), {lineNumbers: true});
效果:动态load文件,codemirror不更新。。。
分析:2. 可否动态刷新codemirror中的值
思路:2. 设置codemirror的值
解决方案:
$.get("/load-file?file-name=" + fileName, function(data) { $('#lispcode').empty(); $('#lispcode').text(data); editor.getDoc().setValue(data); editor.refresh(); });
效果:动态load文件,codemirror更新,表单提交时,textarea数据为新值。(问题解决)
相关推荐
CodeMirror在线代码编辑器 版本:5.60.0 ...最基本功能,需引入codemirror.js和codemirror.css文件 通过调用CodeMirror.fromTextArea()方法或者 CodeMirror()方法初始化配置。(更多配置见官网)
codemirror, 用于CodeMirror在线编辑器的Emmet插件 用于 CodeMirror 4.x 的 Emmet要为CodeMirror编辑器添加Emmet支持,只要在CodeMirror脚本之后将 dist/emmet.js 作为 [removed] 标签添加到HTML页面。 这里脚本
在vue项目中使用codemirror插件实现代码编辑器功能(代码高亮显示及自动提示),具体内容如下所示: 1、使用npm安装依赖 npm install --save codemirror; 2、在页面中放入如下代码 <textarea ref=mycode class...
codemirror5.59.1
codemirror是一款代码在线编辑插件,这里是我下载的codemirror-5.65.11资源包,上传上来方便大家下载,尽快进入业务开发
文本比对js-配合 CodeMirror.MergeView方法使用
codeMirror代码格式化工具,支持sql、C、Java等目前主流的编程语言
codemirror-graphql, GraphQL模式和CodeMirror的帮助器 用于CodeMirror的 GraphQL模式 为CodeMirror提供一个解析器模式,以及一个live和一个由你的GraphQL架构支持的typeahead hinter 。 正在启动npm install --sa
codemirror的sql代码提示默认是不支持中文表名自动提示的,在源码中写法只是检索字母数字下划线,加上中文匹配的正则后,终于支持中文表了。修改文件只有sql.js,其他文件只是为了方便打断点,格式化了一下方法
我自己使用codemirror-4.2开发中的示例,通过common.js和codemirror.html文件可以基本了解怎么使用codemirror。希望能帮助大家学习使用codemirror。
包含完整示例及codemirror所需资源包。
codemirror-5.2.rar从官网下载的包。下载下来还挺慢的,所以分享给大家,希望能给大家提供帮助。里面是有demo的,可以先睹为快
CodeMirror-master,html可进行code编写并进行高亮显示。
项目概述:本项目是一款基于Python的在线交互教学平台,采用...简而言之,此平台通过现代化的Web技术栈,将Flask的简易性与CodeMirror的强大代码编辑功能相结合,打造出一个高效、直观的Python在线学习和教学环境。
Draft: 基于CodeMirror和Marked的在线MarkDown编辑器
Laravel开发-codemirror 代码镜像
react-codemirror2 演示@ 安装npm install react-codemirror2 codemirror --save react-codemirror2带有和组件的概念。 UnControlled包含一个简单的包装程序,该包装程序主要由codemirror本身的内部工作提供code...
Angular-Codemirror组件 在Angular应用程序中使用代码编辑器。 演示: : 安装 在您的应用程序中包含Codemirror javascript文件(带有用于模式的文件) 安装ng2-codemirror JSPM: jspm install npm:ng2-code...
* 左侧提供数据库表字段树形结构,可拖拽到sql编辑框。 * 输入首字母可提示表名字段名(表名字段名可自定义) 。 *括号高亮匹配。 * 执行与中断功能。 * 自定义外部接口获取sql关键词、函数、表字段等,用于sql编辑...