我有一个部分显示通知模式,以便同意网站的条款和服务,我只想展示一次(一旦他们点击我同意它就会消失)。
有没有办法用Meteor做到这一点?
答案 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 source是avoid name clashes,这在渲染模板方面非常有用。
答案 2 :(得分:0)
有很多方法......
这不是Meteor特定的问题。
Template.notifications.events({
'click #close-modal': function(e, t) {
$('#modal').hide();
}
})