gpt4 book ai didi

javascript - 添加路由器以在 Meteor 中按人名查看帖子

转载 作者:行者123 更新时间:2023-12-03 12:31:09 24 4
gpt4 key购买 nike

我是 Web 开发新手,正在使用 Meteor 学习。我几乎一直在关注《Discover Meteor》一书,但是当我偏离一点时,我收到了一个错误。

以下代码可以正常工作,并且永久链接可以正常工作:

路由器.js

Router.configure({
layoutTemplate: 'layout',
loadingTemplate: 'loading',
waitOn: function() {return Meteor.subscribe('allPosts')}
});


Router.map(function() {
this.route('postsList', {path: '/'});

this.route('postPage', {
path: '/posts/:_id',
data: function(){return Posts.findOne(this.params._id)}
});
});

Router.onBeforeAction('loading');

但是当我将以下内容添加到 Router.map 时,它无法正常工作:

this.route('byName',{
path: '/posts/:name',
data: function(){return Posts.findOne({name: this.params.name})}
})

为了清楚起见,我将展示我的模板:

<template name = 'byName'>
{{> postItem}}
</template>

<template name = 'postPage'>
{{> postItem}}
</template>

还有我的 post_item.html:

<template name = 'postItem'>
<div class = "post">
Name: {{name}}, Post: {{post}}
<a href = "{{pathFor 'postPage'}}">See Post</a>,
<a href = "{{pathFor 'byName'}}">By Name</a>
</div>
</template>

当我点击帖子的“查看帖子”时

Name: Wonder Woman, Post: Hera, give me strength! See Post, By Name

我收到了同样的帖子。但是当我点击“按名称”时,我得到了

Name: , Post: See Post, By Name

未填写任何值。我究竟做错了什么?谢谢。

最佳答案

尝试添加 console.log()对每个路由的数据参数的声明...如下所示:

     this.route('postPage', {
path: '/posts/:_id',
data: function(){
console.log("route -> postPage")
return Posts.findOne(this.params._id)
}
});

this.route('byName',{
path: '/posts/:name',
data: function(){
console.log("route -> byName");
return Posts.findOne({name: this.params.name})
}
});

我想你会看到这个问题。我不太确定您想通过您的示例实现什么目标,所以我不确定是否有特定的方法来解决您的问题。不过,我将提供一个选项,以便您可以看到以下内容可行:

  this.route('byName',{
path: '/posts/name/:name',
data: function(){
console.log("route -> byName");
return Posts.findOne({name: this.params.name})
}
});

注意到我如何给它一个不同的匹配路径吗?

在您的示例中,您的路径本质上是相同的(由于参数名称,它们看起来不同,但它们都指向 /posts/<string> )。当iron-router遍历路由以便正确处理路径时,它遇到了postPage首先匹配模式的路线。该路线寻找单个 Post_id等于某个字符串(传递的 name),并且结果为空。您可以切换定义路由的顺序(将 byName 放在 postPage 之上),然后将 byName 放在上面。会起作用,另一个会是空的。

希望有帮助。

关于javascript - 添加路由器以在 Meteor 中按人名查看帖子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23924392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com