我有一个Document
集合,其中的表单可以保存在input
:
document_form.html:
<template name="documentForm">
<form class="form" role="form">
<input name="title" type="text" value="{{title}}">
</form>
</template>
document_form.js:
Template.documentForm.events({
"input input": function(e) {
e.preventDefault();
currentDocumentId = this._id;
setTimeout(function() {
Documents.update(currentDocumentId, {
$set: {
title: $(e.target).find('[name=title]').val()
}
});
}, 3000);
}
});
如您所见,Document
文档应在输入后三秒更新。
我所看到的是我的新输入三秒钟,然后旧的输入返回(旧输入正在恢复)。
所以,比方说,我有Document
名为Untitled
。我将输入输入AnotherTitle
,然后在3秒后输入将恢复为Untitled
。
我在这里做错了什么?
答案 0 :(得分:1)
确定它不是允许/拒绝
//client.js
Template.documentForm.events({
"input input": function(e) {
e.preventDefault();
currentDocumentId = this._id;
setTimeout(function() {
Meteor.call('updateCurrentDocumentId', {
$set: {
title: $(e.target).find('[name=title]').val()
}
});
}, 3000);
}
});
//server.js
Meteor.methods({
updateCurrentDocumentId:function(id,item){
Documents.update(id,item);
}
})
有了这个我们避免,允许/拒绝。
答案 1 :(得分:1)
我认为问题在于你不应该使用find('[name=title]')
find()
用于获取元素的后代。在这里,您将目标指向输入字段,因此它足以使用:
title: $(e.currentTarget).val()
希望你觉得它很有用!