j-editor在tab切换时内容消失切不可编辑

项目使用jeccgboot低代码平台

需求是在一个tab里再放一个tab,里面放三个富文本编辑器,jeecgboot的j-editor组件封装了tinymce插件来实现富文本编辑功能。

问题是在切换到基本信息特征参数这些tab再切换回详情时富文本内文字消失且不可编辑,

网上查阅后发现在切换其他tab过程中富文本的key值没有改变,导致再切换回来富文本编辑器没有重新渲染,出现先前编辑的文字消失且无法再次编辑的问题。

我的解决方法是给每一个富文本的key绑定一个时间戳;第二个富文本在时间戳的基础上加1000,第三个富文本在时间戳的基础上加2000,这样三个富文本都有了各自到key值。然后在最外层tabs切换时,给每个富文本的key加一,key值发生改变则会重新渲染这个元素,至此解决刷新问题,

但是又出现了新的问题:在点击了使用方法注意方法tab 再切换去外层tab再切换回来时,发现这两个tab先前编辑的文字消失了!最终解决方法是给这两个富文本的tab-pane加一个:forceRender="true"的属性,这个属性的意思是当tab-pane被隐藏时是否还要渲染DOM元素,设置为true则是隐藏时也渲染。

附上代码:

        模板中:

        <a-tab-pane key="3" tab="详情">
          <a-tabs
            :default-active-key="tinymceFlag1"
            tab-position="left"
            :style="{ height: '100%', minHeight: '350px', marginTop: '15px' }"
          >
            <a-tab-pane tab="主要性能" :forceRender="true" :key="tinymceFlag1">
              <a-form-item :style="{ height: '350px' }">
                <j-editor v-decorator="['wmMainPerformance', { trigger: 'input' }]" />
              </a-form-item>
            </a-tab-pane>
            <a-tab-pane tab="使用方法" :forceRender="true" :key="tinymceFlag2">
              <a-form-item :style="{ height: '350px' }">
                <j-editor v-decorator="['wmUsageMethod', { trigger: 'input' }]" />
              </a-form-item>
            </a-tab-pane>
            <a-tab-pane tab="注意方法" :forceRender="true" :key="tinymceFlag3">
              <a-form-item :style="{ height: '350px' }">
                <j-editor v-decorator="['wmAttention', { trigger: 'input' }]" />
              </a-form-item>
            </a-tab-pane>
          </a-tabs>
        </a-tab-pane>

         data中:

      tinymceFlag1: Date.now(),
      tinymceFlag2: Date.now() + 1000,
      tinymceFlag3: Date.now() + 2000,

         methods中:

    handleTabsChange(val) {
        this.tinymceFlag1++
        this.tinymceFlag2++
        this.tinymceFlag3++
    },

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在 JEECG 框架中,可以使用 J-Editor 作为富文本编辑器,实现视频上传功能。下面是一个简单的示例: 1. 添加 J-Editor 依赖 在 pom.xml 文件中添加以下依赖: ```xml <dependency> <groupId>com.github.hiboot</groupId> <artifactId>jeditor</artifactId> <version>1.0.0</version> </dependency> ``` 2. 在页面中引入 J-Editor 在需要使用 J-Editor 的页面中,引入 J-Editor 的 CSS 和 JS 文件,并创建一个 textarea 元素作为编辑器的容器: ```html <link rel="stylesheet" href="/jeditor/css/jeditor.css"> <script src="/jeditor/js/jeditor.js"></script> <textarea id="editor" name="content"></textarea> ``` 3. 初始化 J-Editor 在页面加载完成后,使用以下代码初始化 J-Editor: ```javascript var editor = new JEditor("#editor", { uploadUrl: "/upload", // 视频上传接口 uploadFieldName: "file", // 上传文件的字段名 uploadSuccess: function (result) { // 视频上传成功后的回调函数 editor.insertVideo(result.url); } }); ``` 其中,`uploadUrl` 指定视频上传的接口,`uploadFieldName` 指定上传文件的字段名,`uploadSuccess` 是视频上传成功后的回调函数,其中 `result` 参数包含了上传成功后的返回结果,可以在该函数中调用 `editor.insertVideo()` 方法将视频插入到编辑器中。 4. 编写视频上传接口 最后,需要编写一个视频上传的接口,接收上传的视频文件并将其保存到服务器中。具体实现方式可以根据需求选择,例如可以使用 SpringMVC 的 `MultipartFile` 类型接收文件并使用文件上传工具将文件保存到本地或者上传到云存储服务中。 以上就是使用 J-Editor 实现视频上传功能的简单示例。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值