- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是在 Iron Router 中设置路由的相当标准的方法:
Router.route('/posts/:_id', {
name: 'postPage',
data: function() { return Posts.findOne({_id: this.params._id}) }
});
作为一个初学者,我尝试了一下:
Router.route('/posts/:whatever', {
name: 'postPage',
data: function() { return Posts.findOne({_id: this.params.whatever}) }
});
在某种程度上,这很有效。确实,whatever
会将 /posts/
之后的任何内容作为其值,并且数据上下文确实会与之前相同...但现在链接到特定帖子行不通!
所以,
<a href="{{pathFor 'postPage'}}">{{title}}</a>
按照“我的”方式根本行不通(根本不链接到任何内容)。
我无法完全理解这一点,而且我是一个新手,无法掌握 Iron Router 的源代码,所以我希望这里有人能够以即使是初学者也喜欢的方式解释它我能理解。
最好是这样的:
第一个 {{pathFor 'postPage'
}} 在路由中查找名为 postPage
的路由。
它发现该路由对应于 /posts/
,后跟其他内容。
查看数据上下文,发现只返回一篇文章,即与 /posts/
之后的内容具有相同 _id
的文章。
它知道自己应该链接到这篇文章,巧妙地将 URL 设置为 /posts/_id
。
这很可能是错误的,并且它没有解释为什么当 whatever
转换为 _id
时它会起作用。但以类似的方式解析它会对我有很大帮助。
编辑:清理我的问题,使其更容易理解。
最佳答案
有一组简单的情况会导致困惑:
Posts.findOne
问题的解释是,第一个参数可以是选择器或文档 _id
。所以它并不是真正的快捷方式,而是 documented feature .:something
放入iron:router URL 中会导致该值在路由函数内报告为 this.params.something
。这还将something
注册为该路由的参数,这让我们了解pathFor
的工作原理。pathFor
帮助器接受两个输入:第一个是路由名称(在本例中为 'postPage'
),第二个是参数对象,该对象可以来自第二个参数如 {{pathFor 'postPage' params}}
或来自数据上下文,如下所示:{{#with params}}{{pathFor 'postPage'}}{{/与}}
。现在,这就是为什么如果您调用参数 _id
则可以从数据库传入文档,但如果调用 whatever
则不行:您从中检索的 post 对象数据库有一个 _id
字段,但没有 whatever
字段。因此,当您将其传递给 pathFor
时,如果路由的参数也恰好称为 _id
,它只会传递正确的 _id
。
请告诉我这是否有意义,我同意这有点令人困惑,并且这个“快捷方式”隐藏了 pathFor
和 params
实际执行的操作。
关于javascript - 为什么我需要调用动态路由 ":_id"而不是我想要的任何内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29860271/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!