2016-09-09 180 views
0

如果blog/xyz不起作用,我想顯示404頁面。所以我加dataNotFound我routes.js,但我沒有任何結果:IronRouter dataNot在博客文章

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' 
}); 

如果我測試錯誤的URL與blog/ojhojeofje,我沒有404頁,只是後沒有數據。

你有什麼想法嗎?

謝謝!

回答

1

首先,你需要註冊dataNotFound的插件,而不是在onBeforeAction

Router.plugin('dataNotFound', { only: ['blogPost'] }); 

其次,dataNotFound插件適用於通過檢查你的路線data()返回falsy值。既然你想在你的data()函數中加載多個數據對象,你需要改變你的函數,這樣如果找不到帖子它會返回一些錯誤。例如,你可以簡單地這樣做:

data: function() { 
    let post = Posts.findOne({ 
    'slug': this.params.slug 
    }); 
    if (!post) { 
    return false; 
    } 
    ... 

請注意,您還需要確保您訂閱的Posts集合準備好你爲了避免去找不到網頁不必要的運行data之前。

+0

謝謝!完美的工作! –