7

在我的流星应用程序中,我使用 Session 来存储有关用户活动的临时信息。我想使用 amplify.js 将这些信息的某些部分保存到浏览器,但不是全部。

我想要一种拥有“临时”会话密钥和“持久”会话密钥的方法。例如我可以打电话

Session.set('persistent', 'this is persisted to browser memory');
Session.set('temporary', 'this will be erased on page reload, etc');

然后在页面重新加载后

Session.get('persistent'); // returns 'this is persisted to browser memory'
Session.get('temporary'); // returns undefined

在 SO 上找到了一个相关的帖子,但这保存了这种方法保留了整个 Session 对象,我不想这样做。另外,我不想为此使用MongoDB,我希望存储纯粹是客户端......

提前谢谢了!

4

2 回答 2

11

使用localStorage. 如果您希望它具有反应性,这有点棘手,但我想您可以使用Session它来完成它localStorage

启动时从浏览器的 localStorage jar 中获取项目

Meteor.startup(function() {
    Session.set("yourItem", localStorage.getItem("yourItem"));
});

设置时:

localStorage.setItem("yourItem", "yourValue");
Session.set("yourItem", localStorage.getItem("yourItem"));

除非您使用 MongoDB 或其他东西,否则不可能的一件事是,如果您在一个选项卡上设置它,在您刷新页面之前它不会在其他选项卡上更改。但我想 Session 无论如何都是这样的。

于 2013-10-27T14:12:36.313 回答
7

我在使用包u2622:persistent-session利用amplify.js本地存储能力的同时让您使用 MeteorSession对象来设置和访问信息方面取得了成功。

完成后meteor add u2622:persistent-session,您可以继续执行以下操作:

  • Session.setPersistent(key, value)
  • Session.setDefaultPersistent(key, value)

u2622:persistent-session跨标签维护您的数据并重新加载,除非您手动清除浏览器的本地存储。

查看 Github页面了解更多信息

于 2015-03-17T03:44:57.097 回答