【问题标题】:My router doesn't work as expected我的路由器无法按预期工作
【发布时间】:2016-07-09 15:02:27
【问题描述】:

这是路由器代码

Router.route('screens',  {
  path: '/screenshots/:_id',
  template: 'screens',
  onBeforeAction: function(){
    Session.set( "currentRoute", "screens" );
    Session.set("screenshots", this.params._id);
    this.next();
  }
});

这是截图模板的助手

Template.screens.helpers({
    ss: function () {
        var screenshots = Session.get("screenshots");
        return Products.findOne({ _id: screenshots});
    }
});

我在这里调用它

<h4><a href="/screenshots/{{_id}}">Click to view the Screenshots</a>

当我单击查看屏幕截图 URL 时,根据我的路由器配置,该 URL 应该是 /screenshots/:_id,但我在浏览器中看到的是 /screenshots/,没有 _id,页面显示 404 - NOT FOUND .

是否可以创建嵌套路由? 因为在我点击执行上述路线的链接之前。我会在这条路上

Router.route('itemDetails', {
  path: '/item/:_id',
  template: 'itemDetails',
  onBeforeAction: function(){
    Session.set( "currentRoute", "itemDetails" );
    Session.set("itemId", this.params._id);
    this.next();
  }
});

这条路线运行良好,我可以看到项目_id,是否可以在其中创建另一条路线,例如这条路径/item/:_id/screenshots

我将_id 存储在Session.get("itemId") 中。是否有可能以某种方式在路由的路径中调用它?

我尝试了'/item' + '/screenshots' + '/' + Session.get("itemId"),但没有成功

或者有其他方法可以解决吗?

【问题讨论】:

  • 在填充链接的页面上,您能否右键单击该链接并检查它以确保它实际上添加了 {{_id}} 部分?如果它直接转到 /screenshots/ 我怀疑它没有首先在链接中添加 id,因为您的代码不应清除 id 或重定向您
  • @PhilipPryde 将立即尝试
  • @PhilipPryde 在我检查时控制台中没有出现任何内容
  • 右键复制链接地址有什么用?它是否显示您期望的完整网址?
  • @PhilipPryde 我想我误解了你,我所做的是右键单击并检查页面,然后导航到控制台查看是否有任何错误,这不是正确的方法吗?当我没有看到空控制台时。我编辑了我的问题,我添加了一些可能有助于进一步阐述问题的内容

标签: meteor iron-router meteor-helper


【解决方案1】:

问题不在于问题中的代码,发生 404 页面是因为它没有将 id 传递到路径中,浏览器说 /screenshots/ 而不是 /screenshots/randomId 因为它只是从链接。

根据问题的补充并与 Behrouz 聊天:因为值存储在会话中,我们可以使用

Template.registerHelper('session',function(input){ 
    return Session.get(input); 
});

注册一个名为 session 的全局模板助手,可以使用 {{session session_var_name}} 调用它并创建如下链接:

&lt;h4&gt;&lt;a href="/screenshots/{{session "itemId"}}"&gt;Click to view the Screenshots&lt;/a&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 2021-03-04
    • 2021-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多