[英]IronRouter dataNotFound on blog post
如果blog/xyz
不起作用,我想顯示404頁面。 所以我在我的routes.js上添加了dataNotFound,但是我沒有結果:
Router.route('/blog/:slug', {
name: 'blogPost',
parent: 'blog',
itemName: function () {
return this.data().post.title;
},
data: function () {
let post = Posts.findOne({
'slug': this.params.slug
});
return {
post,
profil
};
}
});
Router.onBeforeAction('dataNotFound', {
only: 'blogPost'
});
如果我使用blog/ojhojeofje
測試了錯誤的url,則我沒有404頁,只需發布無數據的頁面即可。
你有什么主意嗎 ?
謝謝 !
首先,您需要將dataNotFound
注冊為插件,而不是在onBeforeAction
中onBeforeAction
:
Router.plugin('dataNotFound', { only: ['blogPost'] });
其次, dataNotFound
插件通過檢查您的路線data()
返回虛假值來工作。 由於要在data()
函數中加載多個數據對象,因此需要更改函數,以便在找不到該帖子時返回錯誤的信息。 例如,您可以簡單地執行以下操作:
data: function () {
let post = Posts.findOne({
'slug': this.params.slug
});
if (!post) {
return false;
}
...
請注意,在運行data
之前,還需要確保對Posts
集合的訂閱已准備就緒,以避免不必要地進入未找到的頁面。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.