Meteor:当我导航到某个页面时收集集合,但是当直接输入URL时不会加载

时间:2015-05-13 01:34:50

标签: meteor anchor

我是Meteor newb,非常感谢这里的任何帮助。

我正在创建一个flashcard应用程序,您可以在其中创建卡片组。它节省了通过一副牌进行的进步。

看来当我通过点击牌组的名称(链接)导航到一副纸牌时,一切正常。但是当我直接粘贴URI时,Deck集合无法加载。

我认为这是因为在lib文件夹中的routes.js是第一个加载的,因此没有数据。我尝试在Router.configure中使用waitOn函数,但它仍无效。

提前感谢您的帮助!

 Router.route ('/:_id/:wordIndex', {
        template: 'wordPage',

        data: function () { 
            var index = this.params.wordIndex;
            var id = this.params._id;

            console.log(Decks);
            var word = Decks.findOne ( id, 
                        { fields: { 'wordIds': 1 } } 
                    ); 
            }
        }
    );

我尝试使用路由器中的waitOn功能:

Router.configure ( {
    layoutTemplate: 'layout',
    waitOn: function () { return [
        Meteor.subscribe ('words'),
        Meteor.subscribe ('decks')
    ]}
})

修改

好吧,似乎我通过获取数据客户端而不是路由找到了解决方案。但我不知道。有必要有更好的方法吗?这对我来说似乎太过分了。

Template.wordItem.helpers({
    wordObj: function () { 
        var controller = Iron.controller();
        var index = controller.params.wordIndex;
        var id = controller.params._id;
        var wordsObject = Decks.findOne ( id, 
                    { fields: { 'wordIds': 1 } } 
                );
        var wordId = wordsObject.wordIds[index];
        return Words.findOne ( wordId );
    },

1 个答案:

答案 0 :(得分:0)

这是我创建的示例存储库,它与您尝试的非常相似。

http://meteorpad.com/pad/xKS38qEZAieEPDyLs/Leaderboard

似乎有效。我怀疑你的问题在其他地方。