我的应用程序中有一个复选框,我想要做的是存储复选框的状态,即是否选中。一旦用户选中了复选框,它就会将其存储到数据库中,当他下次访问该页面时,应该检查它。
我正在尝试使用会话,它可以在同一个应用程序的不同页面上工作,但是一旦我重新加载页面就消失了。我猜会话适用于临时数据。什么应该用于永久数据?
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");
}
})
答案 0 :(得分:2)
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 userId
命令中输入精确的update
(用户文档的ID) - Meteor.users.update({_id: userId}, {$set: {"profile.isChecked": isChecked}});
< / p>
<强> 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"
});