Meteor无法在页面中保持会话的价值

Ryu*_*oki 5 meteor

我遇到的问题是,如果将网页移动到其他网页,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)

Tim*_*Dog 8

UPDATE Meteor现在有一个Session.setDefault方法,可以完全满足您的期望.

原文如下

session在流星目的是根本不同的session在其他框架中的概念(轨道/ ASP.NET MVC/PHP) -在流星其主要功能是作为反应性变量客户端的代码.

它的设计目的不是为了满足您的需求 - 只要您的链接触发,客户端上下文被擦除,任何客户端会话值都消失了.Meteor应用程序不是为传统意义上的导航设计的,所以这就是为什么这看起来很混乱.这完全可以理解:)

我建议你看看流星路由器,而不是接近传统意义上的导航,这有助于简化传统和更多meteoresque方法之间的过渡.

如果您确实需要按照上面描述的方式保存数据,那么您将需要查看放大智能包以在本地持久保存客户端上的数据.

提示:当您在文档中了解Meteor时,请密切关注每个细分受众群右上角的客户端/服务器/指定.