javascript - 将 Meteor 复选框状态与数据库同步

标签 javascript checkbox meteor-accounts meteor-helper

我的应用程序中有一个复选框,我想要做的是存储复选框的状态,即是否选中。一旦用户选中该复选框,就会将其存储到数据库中,并且当他下次访问该页面时,应该选中它。

我正在尝试使用 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/

相关文章:

javascript - 如果一个 promise 失败,$q.all() 不会调用失败处理程序

javascript - 创建一个具有隐私和原型(prototype)(模板)的对象,类似于 C++ class-private

visual-studio-code - 运行 meteor 时出现 'certificate has expired' 错误

php - jquery 数据表和 cakePHP

javascript - 选中复选框时启用禁用 iframe

javascript - 在 ng-repeat 中选择子项时如何选择父项复选框

javascript - 如何在 AngularJS 中选中删除时隐藏文本和复选框?

node.js - 谷歌一键与 Meteor 集成

javascript - 在 Meteor js 中同时登录的两个同时用户

javascript - NavigationUrl 与在线 appSettings :***