我的应用程序中有一个复选框,我想要做的是存储复选框的状态,即是否选中。一旦用户选中该复选框,就会将其存储到数据库中,并且当他下次访问该页面时,应该选中它。
我正在尝试使用 session ,它可以在同一应用程序的不同页面上工作,但是一旦我重新加载页面,它就消失了。我猜 session 适用于临时数据。永久数据应该用于什么?
HTML
<template name="test">
<input type="checkbox" id="check" checked="{{Checked}}">
</template>
JS
Template.Test.events({
'click #check':function(e){
Session.set('Checked', e.target.checked);
}
})
Template.Test.helpers({
Checked: function(){
return Session.get("Checked");
}
})
最佳答案
http://meteorpad.com/pad/u3D5TDaMDDg8Aw2ie/Leaderboard
How long do certain Meteor data sources live for?
由于此复选框设置已同步到登录的用户,因此您希望将此设置保存到登录的用户上。
HTML
<body>
{{> loginButtons }}
{{#if currentUser}}
{{> Test }}
{{/if}}
</body>
<template name="Test">
<div class="container">
<div class="row">
<div class="col-xs-8 col-xs-offset-2">
<input type="checkbox" id="check" checked="{{isChecked}}">
</div>
</div>
</div>
</template>
Meteor Users 集合有点特殊,您需要阅读一下它的功能
但现在,您需要了解的是来自客户端的信息:
您可以使用
Meteor.user()
访问当前登录的用户默认情况下,Meteor 会将
Meteor.user().profile
字段发布到客户端。在客户端中,您只能编辑
Meteor.user().profile
字段。为了编辑/更新 Meteor 用户,您必须在 Mongo
update
命令中输入精确的userId
(用户文档的 ID) -Meteor.users.update({_id: userId}, {$set: {"profile.isChecked": isChecked}});
JS
Template.Test.events({
'click #check':function(e){
var userId = Meteor.user()._id;
var isChecked = e.target.checked;
Meteor.users.update({_id: userId}, {$set: {"profile.isChecked": isChecked}});
}
})
Template.Test.helpers({
isChecked: function(){
return Meteor.user().profile.isChecked;
}
})
Accounts.ui.config({
passwordSignupFields: "USERNAME_ONLY"
});
关于javascript - 将 Meteor 复选框状态与数据库同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30871196/