- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 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/
我有一个 TextView 对象,其目的是输入一个人的名字。我看了here并看到 textPersonName 是一种输入类型。所以我选择了那个输入类型,认为它会做我想要的。 但是,这种输入类型不将首
我有一个 PHP 脚本,应该检查“有效”的人名,但最近破解了带有空格的名称,因此我们向验证器添加了空格。 除了这样做之外,有没有办法向 CakePHP 的验证器添加黑名单以阻止所有“无效”字符,而不是
我有很多字符串,如下所示, 伊斯兰堡:首席大法官 Iftikhar Muhammad Chaudhry 说国民账户 卡拉奇,7 月 24 日 -- 警方声称已分别逮捕数名嫌疑人 ALUM KULAM,
我是一名优秀的程序员,十分优秀!