我刚刚在我的meteor应用程序中注意到会话变量在页面刷新时被清除。所以
答案 0 :(得分:3)
Meteor.Session仅适用于客户端。它是您应用程序中的JavaScript全局对象。如果刷新页面,它就会被删除。您的会话存储在客户端localStorage https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage中。 Meteor不会将Cookie用于Session https://www.meteor.com/blog/2014/03/14/session-cookies。
你需要解释更多你想要完成的事情。我加载页面后使用Meteor.Session,而不是很多东西,但为了获得我的初始状态,我的URL包含足够的信息来设置初始状态。
使用Meteor,您理想情况下不想刷新浏览器。理想情况下,AJAX和HTML5推送状态以及Meteor的反应性都会发生或应该发生。
您应该阅读他们的文档。这是关于会话的部分,http://docs.meteor.com/#session
答案 1 :(得分:0)
这是一个老问题,但由于我发现自己需要同样的事情,所以我就是这样做的。我在设置值时“扩展”会话以实际将其存储在localstorage上,并在页面加载时将localstorage加载到会话中。
// improving the session package to persist it to the localstorage
Session._set = Session.set;
Session.set = function(key,value) {
Session._set(key,value);
localStorage.setItem(key,JSON.stringify(value));
};
// helper function
function isJSON(str) {
try {
return (JSON.parse(str) && !!str);
} catch (e) {
return false;
}
}
// loading the localstorate on load
for (var i = 0; i < localStorage.length; i++) {
var key = localStorage.key(i);
var value = localStorage.getItem(key);
Session._set(key,isJSON(value) ? JSON.parse(value) : value);
}