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