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]));
我有以下 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]));