我遇到的问题是,如果将网页移动到其他网页,Meteor无法保持会话的值.我是Meteor的新手,也许我在误用.如何处理页面中的会话值?即使页面移动到其他页面或重新加载浏览器,我也希望保持会话的值.
我正计划使用Javascript框架(如Meteor,Mojito和Express(Node.js))构建Web应用程序,并在开发之前对其进行测试.
我使用的是Meteor版本0.5.2(6635ae1007)和Chrome版本23.0.1271.95.
这是测试代码和测试步骤:
(1)单击"TEST"按钮:
这会将"结果为"标签更改为"结果正常".
(2)单击"返回首页"链接或重新加载浏览器:
我想保持标签'结果没问题',但它会回到'结果是'.这意味着会话值未定义.
test.js
if (Meteor.isClient) {
Template.test.result = function() {
var result = Session.get('TEST');
console.log('Result: %s', result);
return result;
}
Template.test.events({
'click' : function() {
Session.set('TEST', 'OK');
}
});
}
Run Code Online (Sandbox Code Playgroud)
的test.html
<head>
<title>sample-session</title>
</head>
<body>
<h1>Session Test</h1>
<a href="./">Back to Top page<a/><br/>
{{> test}}
</body>
<template name="test">
<input type="button" value="TEST"></input><br/>
Result is {{result}}.
</template>
Run Code Online (Sandbox Code Playgroud)
UPDATE Meteor现在有一个Session.setDefault方法,可以完全满足您的期望.
原文如下
的session在流星目的是根本不同的从session在其他框架中的概念(轨道/ ASP.NET MVC/PHP) -在流星其主要功能是作为反应性变量为客户端的代码.
它的设计目的不是为了满足您的需求 - 只要您的链接触发,客户端上下文被擦除,任何客户端会话值都消失了.Meteor应用程序不是为传统意义上的导航设计的,所以这就是为什么这看起来很混乱.这完全可以理解:)
我建议你看看流星路由器,而不是接近传统意义上的导航,这有助于简化传统和更多meteoresque方法之间的过渡.
如果您确实需要按照上面描述的方式保存数据,那么您将需要查看放大智能包以在本地持久保存客户端上的数据.
提示:当您在文档中了解Meteor时,请密切关注每个细分受众群右上角的客户端/服务器/指定.