Meteor:在Router.route()中的Session.set在用于'客户端时是未定义的。页

时间:2014-12-17 17:05:38

标签: javascript meteor publish router subscribe

我在app.js中声明了一个铁路由器,它位于根'lib'文件夹中。

    Router.route('/editTiki/:_id', function () {

        var params = this.params
        var id = params._id

        Session.set("editTikiID", id)

        this.render("editTikiRoute")

    }, {name:"editTikiRoute"});

然后,在'client'文件夹里面的editTiki.js里面,我有这个代码:

console.log(Session.get("editTikiID"))
// undefined

然而,它是未定义的,不明白为什么。我需要它来订阅正确的文章:

Meteor.subscribe("tikiDBEdit", Session.get("editTikiID"))
感谢你的洞察力......

1 个答案:

答案 0 :(得分:1)

只需订阅您的路由器,例如:https://github.com/EventedMind/iron-router/blob/devel/Guide.md#wait-and-ready
如果您不想等到订阅准备就绪,甚至更简单:

Meteor.subscribe("tikiDBEdit", id);

在执行路由之前,不会定义会话变量。你的editTiki.js文件中的任何代码都不在函数中(比如你的console.log)我会在你的路由器中设置会话变量之前执行。这就是javascript的工作原理 这意味着会话变量应该在任何模板助手或模板的事件和渲染函数中定义。