我在 Meteor 项目中遇到了 Summernote 的问题。在我提交表单后,内容是重复的。
这是我的标记:
{{#with entity}}
<div class="content">{{{content}}}</div>
<button>Edit</button>
{{/with}}
编辑按钮点击处理程序:
$('.content').summernote();
表单提交处理程序:
var $editor = $('.content'), content = $editor.code();
$editor.destroy();
Entity.update(this._id, { $set: { content: content } });
$editor.destroy()
调用后,.content
元素将返回到其原始的不可编辑状态,并具有更新的内容。但是在下一个 Tracker 刷新周期 Blaze 追加新entity.content
的<div class="content">
,我看到内容重复。
一个简单的复制场景:
- 假设原始
entity.content
是Hello, world!
. - 单击编辑并更改以
Bye bye, world!
提交表单。 我们有
entity.content
equalsBye bye, world!
但标记看起来像这样:<div class="content"><p>Bye bye, world!</p><p>Bye bye, world!</p></div>
我有一个想法如何解决这个问题,但我不喜欢它。我可以在提交表单时比较新内容和原始内容。如果内容没有改变,就不会有重复,所以上面的代码可以工作。但如果内容不同,请执行以下操作:$editor.destroy().html('')
. 在下一个 Tracker 刷新 Blaze 将插入更新的内容。
有没有更好的解决方案?