【问题标题】:Session variable not updating when going to a specific route前往特定路线时会话变量未更新
【发布时间】:2015-10-16 12:40:20
【问题描述】:

我在设置会话变量和处理路由器时做错了

main.js:

Template.global.onCreated(function(){
    Session.setDefault("musicFilteredCategory", "latest")
});

router.js:

Router.route("/music/:category?", {
    name: "music",
    template: "music",
    beforeAction: function () {
        var category = this.params.category;
        Session.set("musicFilteredCategory", category);
    }
});

但是当我打开页面“/music/latin-radio”并检查Session.get("musicFilteredCategory")时,我得到的是“latest”而不是“latin-radio”

后来我把 Session.setDefault("musicFilteredCategory", "latest") 改到Template.global.onCreated({})之外,结果还是一样。

最好的做法是什么?

我还想在解决此问题后添加此功能: 当用户转到“/music”时被重定向到“/music/:defaultMusicCategory”

PS:我正在使用 Meteor 1.2.0.1 和 Iron Router 1.0.9

【问题讨论】:

  • 在控制台中。这仅在页面加载时发生在我身上。我相信我的助手没问题,因为我已经设法通过单击事件来解决此问题,该事件设置新变量并按应有的方式加载类别,但是当我直接在类别中打开页面时,这不起作用
  • 感谢@Kyll 解决了大部分问题。现在,当我打开像“/music/:category”这样的任何网址时它可以工作,但是如果我只打开“/music”,它就不会获取默认的musicFilteredCategory
  • 如果你调用“/music”this.params.category 是未定义的。检查此项,如果为真,则重定向到您想要的路线。
  • edit您的帖子包含您对问题的任何其他信息。避免在 cmets 中添加它,因为它们更难阅读并且更容易删除。帖子的编辑按钮就在帖子标签的下方。

标签: javascript session meteor routes iron-router


【解决方案1】:

正如@Kyll 指出的,我应该使用 onBeforeAction 来运行函数。

这解决了我的部分问题,但是在访问不同的路线时类别没有改变。

这是我必须做的:

Router.route("/music/:category?", {
    name: "music",
    template: "music",
    onBeforeAction: function () {
        var category = this.params.category;
        if (category !== "undefined") {
            Session.set("musicFilteredCategory", category);
        }
        this.render("music");
    }
});

这不包括路线“/music”(没有斜线)所以我还必须添加这条路线,我把它放在上面的代码之前

Router.route("/music", {
    name: "music",
    template: "music"
});

为了解决这个问题,我必须将 Session.setDefault() 移到模板范围之外,因为它们覆盖了在路由器上建立的会话,所以我必须将它们放在 Meteor.startup 函数中

Meteor.startup(function () {
    Session.setDefault("musicFilteredCategory", "latest");
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-08
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多