在什么情况下Meteor.user()没有被动?

时间:2014-08-25 19:15:56

标签: meteor

我有一个模板助手

  multiple_emails: ->
    Meteor.user().emails.length > 1

在电子邮件阵列中添加或删除对象时不会重新运行。为什么是这样?我应该如何编写这个帮助器重新运行?

2 个答案:

答案 0 :(得分:2)

某些内容在代码中的其他位置无效。

我给你做了一个小垫子:http://meteorpad.com/pad/B6L3cCXAPwPSdqc5s

模板:

<head>
  <title>Leaderboard</title>
</head>

<body>
  {{> loginButtons}}
  {{#if currentUser}}
   {{> addEmail}}
  {{/if}}
</body>

<template name="addEmail">
  <button>addEmail</button>
  nb: {{emails}}
</template>

客户Js:

Template.addEmail.events({
  'click button': function() {
    Meteor.users.update({
      _id: Meteor.userId()
    }, {
      $addToSet: {
        emails: {address: 'email' + Math.random()}
      }
    })
  }
});

Template.addEmail.helpers({
  emails: function() {
    return Meteor.user().emails.length;
  }
});

您需要帐户基础,密码和ui包。

使用电子邮件注册并单击“le addemail”按钮。正如您所看到的,当单击按钮时,它会更新数字(并快速返回到1,因为您无法以这种方式更新它,但这只是为了说明一点)。

答案 1 :(得分:1)

大多数情况下,如果某个集合在客户端看起来没有被动,那么在pub / sub部分的某处就会出现问题/错误。