Javascript 如何在已创建的编辑器上设置数据?

Javascript 如何在已创建的编辑器上设置数据?,javascript,jquery,ajax,ckeditor,ckeditor5,Javascript,Jquery,Ajax,Ckeditor,Ckeditor5,我想将数据设置为3个已创建的编辑器,但我无法这样做 我试过了。no.2设置在新创建的编辑器上发生的数据,而不是现有的编辑器 下面是我创建3个编辑器的地方: 下面是我试图将我的数据设置到所有3个现有编辑器的地方: 数据存储在本地存储器中,我想检索它们并将它们设置到我已经创建的3个编辑器中,而这3个编辑器目前没有出现。您这里的问题是,您需要获取现有ClassicEditor的实例来编辑它 如本文所述,您可以将实例存储在全局变量中(就像您已经在做的那样,但不是将index storeelement.i

我想将数据设置为3个已创建的编辑器,但我无法这样做

我试过了。no.2设置在新创建的编辑器上发生的数据,而不是现有的编辑器

  • 下面是我创建3个编辑器的地方:
  • 下面是我试图将我的数据设置到所有3个现有编辑器的地方:

  • 数据存储在本地存储器中,我想检索它们并将它们设置到我已经创建的3个编辑器中,而这3个编辑器目前没有出现。

    您这里的问题是,您需要获取现有ClassicEditor的实例来编辑它

    如本文所述,您可以将实例存储在全局变量中(就像您已经在做的那样,但不是将index store
    element.id
    As key)

    同样从您的评论中可以清楚地看到,您在编辑器创建和编辑器集之间面临竞争条件,因此,您可以在设置值之前等待编辑器创建完成,而不是在
    窗口中保存编辑器。编辑器
    保存承诺

    create_editor: function () {
        window.editors = {};
        document.querySelectorAll('.editor').forEach(node => {
            window.editors[node.id] =
            ClassicEditor
                .create(node, {
                    //removePlugins: [ 'Heading', 'Link' ],
                    toolbar: ['bold', 'italic', 'bulletedList', 'numberedList', 'blockQuote', 'Heading'],
                    //placeholder: 'Type the content here!'
                })
                .then(editor => {
                    //console.log(editor);
                })
                .catch(error => {
                    //console.error(error);
                });
        });
    }
    
    set_editor: function (elem, data) {
        window.editors[elem].then(editor => editor.setData(data));
    }
    

    我会试试,让你知道。嗨,Avcs,我试过了,你的代码和我的一样。您的代码创建了另一个编辑器,数据显示在那里。我想向我现有的编辑器显示数据。这怎么可能?请遵循这个答案,它提供了一种基于元素idhey Avcs存储实例和获取的方法,谢谢链接。我现在可以设置数据,但我可以为最后一个编辑器设置数据,而不是为之前的所有其他2个编辑器设置数据。你能帮忙吗?另外,我尝试了你编辑的代码,我得到了“window.editors[elem]未定义”,尽管console.log(window.editors)返回了3个编辑器的正确对象。也许你正面临竞争条件?创建方法是异步的
    set_editor: function (elem, data) {
                ClassicEditor
                    .create(document.querySelector('#' + elem))
                    .then(editor => {
                        editor.setData(data);
                    })
            }
    
    create_editor: function () {
        window.editors = {};
        document.querySelectorAll('.editor').forEach(node => {
            window.editors[node.id] =
            ClassicEditor
                .create(node, {
                    //removePlugins: [ 'Heading', 'Link' ],
                    toolbar: ['bold', 'italic', 'bulletedList', 'numberedList', 'blockQuote', 'Heading'],
                    //placeholder: 'Type the content here!'
                })
                .then(editor => {
                    //console.log(editor);
                })
                .catch(error => {
                    //console.error(error);
                });
        });
    }
    
    set_editor: function (elem, data) {
        window.editors[elem].then(editor => editor.setData(data));
    }