Meteor:Session.set,在Router.route()中,在“客户端”页面中使用时是未定义的

Meteor: Session.set, inside Router.route(), is then undefined when used in a 'client' page

本文关键字:客户端 未定义 route Router Session Meteor set      更新时间:2023-09-26

我在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"});

然后,在"客户端"文件夹内的editTiki.js中,我有以下代码:

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

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

Meteor.subscribe("tikiDBEdit", Session.get("editTikiID"))

感谢您的见解...

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

Meteor.subscribe("tikiDBEdit", id);

在执行路由之前,不会定义会话变量。您的 editTiki.js 文件中不在函数(我猜是控制台.log(中的任何代码都将在路由器中设置会话变量之前执行。这就是JavaScript的工作方式。
这意味着会话变量应在任何模板帮助程序或模板的事件和呈现函数中定义。