Vue和Summernote -从数据库加载时,模型中的内容未显示在表单中

bweufnob  于 2022-11-25  发布在  Vue.js
关注(0)|答案(3)|浏览(142)

好的,我有一个表单,我在其中多次使用所见即所得编辑器summernote。当我填写表单时,模型被正确更新,内容被显示,结果被正确保存到数据库中。但是当我想编辑和加载数据库中的数据时,模型在开发工具中正确显示内容,但没有任何内容显示在屏幕上。
这就是我所拥有的:
我有一个组件要加载并启动summernote编辑器

<template>
    <textarea class="form-control"></textarea>
</template>
<script>
    export default{
        props : {
            model: {
                required: true
            },
            height: {
                type: String,
                default: '150'
            }
        },
        mounted() {
            let config = {
                height: this.height,
            };
            let vm = this;
            config.callbacks = {
                onInit: function () {
                    $(vm.$el).summernote("code", vm.model);
                },
                onChange: function () {
                    vm.$emit('update:model', $(vm.$el).summernote('code'));
                },
            };
            $(this.$el).summernote(config);
        }
    }
</script>

我有一个表单(这里只是它的一部分),其中我将Summernote组件加载为html-editor

<html-editor 
   :model.sync="form.areaOfWork" 
   :class="{ 'is-invalid': form.errors.has('areaOfWork') }" 
   name="areaOfWork" 
   id="areaOfWork"></html-editor>

在道具中,从DB加载后,数据正确显示,即:

model:"<p> ... my content ...</p>"

同样,在我的表格中它正确地显示了,即:

form: Object
  areaOfWork: "<p> ... my content ...</p>"
  ...

但是它没有在html-editor中显示。我被卡住了-也许它是我忽略的一些超级简单的东西,但是到目前为止我没有找到任何帮助我的东西。感谢你的想法和投入

u5rb5r59

u5rb5r591#

我认为这个问题源于在一个项目中使用jquery和vue!
因为vue使用的是虚拟DOM,而jquery改变的是真实的DOM,这就造成了冲突!所以最好不要在一个项目中同时使用它们,或者像下面的链接一样安全地使用jquery:
https://vuejsdevelopers.com/2017/05/20/vue-js-safely-jquery-plugin/

kcwpcxri

kcwpcxri2#

谢谢你的回答,@soroush,但这似乎不是问题所在。有一个通信,它似乎工作。我确实看到我的表单被填写正确的数据以及。
在尝试了许多方法之后,我找到了一个简单的解决方法:观察者
我补充道

watch: {
        areaOfWork: (val) => {
          $('#areaOfWork').summernote("code", val);
        }
      },

当我调用我的数据库并读取项目时,我为监视器提供数据,它就工作了。
尽管如此,我还是不明白为什么vm.model在onInit回调中没有显示出来,但是由于它似乎可以工作,我想为您提供一个答案。

axzmvihb

axzmvihb3#

于飞:

<textarea class="summernote-editor"name="memo_content"id="memo_content"</textarea>

JS:

$('#memo_content').summernote("code", response.data.res.memo_content);

相关问题