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

时间:2012-12-06 16:20:07

标签: 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');
    }
  });
}

的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>

1 个答案:

答案 0 :(得分:8)

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

下面的原始答案

meteor中的session对象与其他框架(Rails / ASP.NET MVC / PHP)中的session概念根本不同 - 它在Meteor中的主要功能是作为客户端代码的reactive variable

设计用于执行您期望的操作 - 只要您的链接触发,客户端上下文被擦除,并且任何客户端会话值都消失了。 Meteor应用程序不是为传统意义上的导航设计的,所以这就是为什么这看起来很混乱。这完全可以理解:)

我建议您先看看meteor-router,而不是接近传统意义上的导航,这有助于简化传统方法和更多meteoresque方法之间的转换。

如果您确实需要按照上述描述的方式保留数据,那么您需要查看amplify smart package以便在本地保存客户端数据。

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