javascript - 是否可以对 Meteor 用户进行响应式(Reactive) isVerified 调用?

标签 javascript meteor

使用 Meteor Accounts 包,每个用户的电子邮件都具有已验证属性。我想从客户端检查这一点并被动地更新 dom。简而言之,我有一个模板,其中列出了属于某个组的所有用户,并且我想标记那些已回复发送给他们的 sendVerification() 电子邮件的用户。

想象一下:

<template name="users">
  {{#each allusers}}
    {{> user}}
  {{/each}}
</template>

<template name="user">
  <span>{{name}}</span>
  <span class="{{isVerified}}">Verified</span?
</template>

与:

Template.user.helpers({
  isVerified: function(){
    var user = this;
    // return true if this user is verified (has replied to verification email)
    Meteor.call('checkVerification', user, function(err, verified){
      if (verified) return 'active';
      else return '';
    });
  }
});

上面的帮助器的问题是 Meteor.call 不是 react 性的,所以在我得到响应之前模板已经渲染了。另一个问题是 Meteor.users 集合(或应该)仅在服务器上可用,我不能允许客户端订阅整个集合。

那么,除了在收到响应时使用 jquery 重新绘制 dom 之外,是否有一个好的方法将其连接在一起以创建一个有用的 isVerified() 函数?

最佳答案

只需在收到回调时更新 session 值即可。

Template.user.isVerified = function(){
  return Session.get("verified");
}

function checkVerified() {
  var user = this;
  // return true if this user is verified (has replied to verification email)
  Meteor.call('checkVerification', user, function(err, verified){
    if (verified) Session.set("verified", true);
  });
}

然后只要您需要就可以调用checkVerified。我建议不要在模板帮助程序中执行此操作,因为每次模板呈现并执行帮助程序时,您都会访问服务器,但会在代码中发生操作的某个位置进行操作。例如,在用户完成注册后。或者当他们下次加载页面时。等等

关于javascript - 是否可以对 Meteor 用户进行响应式(Reactive) isVerified 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24542596/

相关文章:

javascript - 如何将 javascript 字符串拆分成最多 2 个部分?

javascript - 如何在 jQuery 中获取相对于父级的 offset()?

javascript - 如何在快速表单属性_id中引用父模板

authentication - 身份验证 token 、本地存储和 meteor

ubuntu - Curl:无法连接到 install.meteor.com 端口 443(AWS 服务器)

javascript - meteor 帐户:错误调用storageLoginToken()“未定义不是函数”

javascript - 参数传递与本地存储

javascript - 用主干覆盖同步值的简单方法

node.js - 在 WebStorm 11 中创建 angle-meteor 项目

javascript - 从 .NET Framework 3.5 升级到 4.0 后,下拉列表上没有浏览器回发