【发布时间】: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