簡體   English   中英

IronRouter dataNotFound在博客文章中

[英]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注冊為插件,而不是在onBeforeActiononBeforeAction

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM