将 Meteor 复选框状态与数据库同步
Sync Meteor checkbox state with database
我的应用程序中有一个 复选框,我想做的是存储复选框的状态,即是否选中。一旦用户选中复选框,它就会将其存储到数据库中,下次他访问该页面时应该选中它。
我正在尝试使用会话,它在同一应用程序的不同页面上工作,但是一旦我重新加载页面,它就消失了。我想会话适用于临时数据。永久数据应该使用什么?
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
字段。
为了edit/update一个Meteor用户,你必须在Mongo[=16]中输入精确的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"
});
我的应用程序中有一个 复选框,我想做的是存储复选框的状态,即是否选中。一旦用户选中复选框,它就会将其存储到数据库中,下次他访问该页面时应该选中它。
我正在尝试使用会话,它在同一应用程序的不同页面上工作,但是一旦我重新加载页面,它就消失了。我想会话适用于临时数据。永久数据应该使用什么?
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
字段。为了edit/update一个Meteor用户,你必须在Mongo[=16]中输入精确的
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"
});