Quill Editor,'on' 方法只工作一次

Quill Editor, The 'on' method works only once

我有以下 QuillEditor 脚本(我有多个编辑器):

var editors = {};
        function editors() {
     var toolbarOptions = [
                        [{'list': 'ordered'}, {'list': 'bullet'}],
                    ];
                    data.forEach(function (el) {
                        editors[el] = new Quill(el['editor'], {modules: {toolbar: toolbarOptions}, theme: 'snow', scrollingContainer:el['quill'] });
                        editors[el].on('text-change', copyText(el['text'], editors[el]));
                    });
                }
        }
                function copyText(text, editor) {
                    text.innerHTML = editor.root.innerHTML;
                    console.log(text.innerHTML)
                }

为了在后端使用它,我将文本从编辑器复制到文本区域 copyText(el['text']

我需要一直工作,但它正在应对text/html,只有在函数执行时才工作一次。我期待编辑器[el].on('text-change',像事件侦听器一样工作。

scrollingContainer,不是卷轴。我检查目标是否存在,是编辑器的父级。

我不确定这部分是否错误但是你在editors函数之后有一个额外的}

这里的主要问题是,您不是设置事件监听器,而是 运行 事件监听器,这就是为什么它 运行 只有一次。

因此将事件侦听器行更改为:

editors[el].on('text-change', function () {
    copyText(el['text'], editors[el]);
});

我通常不喜欢在其他函数中创建函数,尤其是在循环内部,因此我建议创建一个函数工厂函数,它会为每个元素创建一个新函数。

function createListener(text, editor) {
    return function(){
        copyText(text, editor);
    };
}

并这样称呼它:

editors[el].on('text-change', createListener(el['text'], editors[el]));