gpt4 book ai didi

javascript - 使用 setTimeout 时 meteor 集合不保存

转载 作者:行者123 更新时间:2023-12-03 10:59:15 25 4
gpt4 key购买 nike

我有一个在输入上保存 contenteditable 区域的事件:

Template.documentPage.helpers({
contenteditable: function() {
return '<div class="content" contenteditable="true">' + this.content + '</div>' // hack to avoid Blaze's code duplication bug in contenteditable elements
}
})

Template.documentPage.events({
'input .content': function(e) {
var savedSel = rangy.saveSelection()
var document = $(e.target).html()

setTimeout(function(){
Documents.update(this._id, {$set: {content: document}}, function(){
rangy.restoreSelection(savedSel)
console.log('saved')
})
}, 3000)

模板:

<template name="documentPage">
<div class="editor">
<input class="title" type="text" value="{{title}}">
{{{contenteditable}}}
</div>
</template>

我确实在控制台中看到“已保存”,但 contenteditable div 中的内容未保存。当我删除 setTimeout 时,集合确实保存了。

编辑:

我尝试了Meteor.setTimeOut并且Session也不起作用:

'input .content': function(e) {
Meteor.setTimeout(function(){
Session.set('ready', true)
}, 3000)

Tracker.autorun(function(){
if(Session.get('ready')){
var savedSel = rangy.saveSelection()
var document = $(e.target).html()
console.log(document)
Documents.update(this._id, {$set: {content: document}}, function(){
rangy.restoreSelection(savedSel)
console.log('saved')
Session.set('ready', false)
})
}
})

最佳答案

在尝试解决大约 30 分钟后,我最终做到了这一点。

事件内部

Template.example.events({
Session.set('idExample',this._id);
Meteor.setTimeout(function(){
Session.set('ready',true)
},5000)
})

以及外部的一些Tracker.autorun(function(){})

Tracker.autorun(function(){
if(Session.get('ready')){
Documents.update(Session.get('idExample'), {$set: {content: document}}, function(){
rangy.restoreSelection(savedSel)
console.log('saved')
})
}
});

关于javascript - 使用 setTimeout 时 meteor 集合不保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28162136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com