Pear-Admin-Layui中的tinymce框架作者对其进行了一些封装,导致其不支持同页面多个编辑器,反馈无果,于是上一下解决办法:
原版插件下载地址:
https://fly.layui.com/extend/tinymce/
https://gitee.com/chick1993/layui-tinymce
下载成功以后将其中的tinymce目录覆盖到框架目录:/static/admin/component/pear/modules
对tinymce.js根据自己需求做适当修改,以下是我的修改片段:
// ---------------- 以上代码无需修改 ---------------- var plugin_filename = 'tinymce.min.js'//插件路径,不包含base_url部分 var settings = { base_url: modPath , images_upload_url: '/admin/api/upload'//图片上传接口,可在option传入,也可在这里修改,option的值优先 , language: 'zh_CN'//语言,可在option传入,也可在这里修改,option的值优先 , response: {//后台返回数据格式设置 statusName: response.statusName || 'code'//返回状态字段 , msgName: response.msgName || 'msg'//返回消息字段 , dataName: response.dataName || 'data'//返回的数据 , statusCode: response.statusCode || { ok: 20000//数据正常 } } , success: function (res, succFun, failFun) {//图片上传完成回调 根据自己需要修改 if (res[this.response.statusName] == this.response.statusCode.ok) { succFun(res.data.url); //指向图片地址 } else { failFun(res[this.response.msgName]); } } }; // ---------------- 以下代码无需修改 ----------------
3.使用方法。这里只是片段,可以结合自己实际情况参考试用:
//容器初始化
<script> var editorArray = []; var editorObj = []; </script>
//渲染编辑器,这里如果是多个话 只需要重复加载下方代码即可 <textarea id="unit-editor-{{$list['name']}}" >{{$list['value']}}</textarea> <script> let {{$list['name']}} = null; editorArray.push("{{$list['name']}}"); editorObj.push("{{$list['name']}}"); layui.use(['tinymce'], function () { let tinymce = layui.tinymce; editorObj.{{$list['name']}} = tinymce.render({ elem: "#unit-editor-{{$list['name']}}", height: 400 }); }) </script> //end
//获取编辑器内容 <script> layui.use(['tinymce'], function () { let tinymce = layui.tinymce; if (editorArray.length > 0) { for (i = 0; i < editorArray.length; i++) { let key = editorArray[i]; console.log('key:' + editorArray[i]); let content = tinymce.get('#unit-editor-'+key).getContent(); console.log('content :' + content ); } } }); </script>
效果图:
无论从事什么行业,只要做好两件事就够了,一个是你的专业、一个是你的人品,专业决定了你的存在,人品决定了你的人脉,剩下的就是坚持,用善良專業和真诚赢取更多的信任。