Meteor JS& Blaze - 仅显示一次加载

时间:2015-08-23 14:57:56

标签: meteor meteor-blaze

我有一个部分显示通知模式,以便同意网站的条款和服务,我只想展示一次(一旦他们点击我同意它就会消失)。

有没有办法用Meteor做到这一点?

3 个答案:

答案 0 :(得分:1)

假设您想在数据库中存储一个布尔值,表示用户已接受这些条款(因此永远不会再被询问),您可以在用户对象的某处添加一个名为hasAcceptedTerms的字段(例如,用户的个人资料)。完成后,您可以像这样编写模板:

<template name="myTemplate">
  {{#if areTermsVisible}}
    (put terms partial here)
  {{/if}}
</template>

areTermsVisible的样子:

Template.myTemplate.helpers({
  areTermsVisible: function() {
    var user = Meteor.user();
    return user && user.profile && !user.profile.hasAcceptedTerms;
  }
});

记录接受度的代码如下:

Template.myTemplate.events({
  'click .accept-terms': function() {
    var userId = Meteor.userId();
    var modifier = {$set: {'profile.hasAcceptedTerms': true}};
    Meteor.users.update(userId, modifier);
  }
});

答案 1 :(得分:1)

也许并不奇怪,处理Cookie政策通知的最佳方式是使用Cookie。问题不在于流星特定,但至少有两个良好的氛围包可以帮助您解决问题:

https://atmospherejs.com/mrt/cookies

https://atmospherejs.com/chuangbo/cookie

你需要做的基本上是设置cookie

Cookie.set('userHasAcceptedPolicy', true, { year: 1 });

使用您喜欢的任何参数,并且只要用户单击“接受”按钮即可。然后,在您决定是否需要显示策略通知之前,您可以使用:

Cookies.get('userHasAcceptedPolicy');

看是否有必要这样做。因此它与@DavidWeldon建议的解决方案几乎相同,但它不需要引用Meteor.user()对象,因此用户无需拥有帐户即可接受该策略。

请注意,至少在mrt:cookies - Cookies.get的情况下,reactive data sourceavoid name clashes,这在渲染模板方面非常有用。

答案 2 :(得分:0)

有很多方法......

这不是Meteor特定的问题。

Template.notifications.events({
  'click #close-modal': function(e, t) {
    $('#modal').hide();
  }
})