【问题标题】:Meteor: Collection loads when I navigate to a page, but not when URL is directly inputtedMeteor:当我导航到页面时会加载集合,但在直接输入 URL 时不会加载
【发布时间】:2015-05-13 12:41:15
【问题描述】:

我是 Meteor 新手,如果有任何帮助,我将不胜感激。

我正在创建一个抽认卡应用程序,您可以在其中创建卡片组。它保存了一个人通过一副纸牌所取得的进步。

看来,当我通过单击牌组的名称(链接)导航到牌组时,一切正常。但是当我直接粘贴 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 );
    },

【问题讨论】:

    标签: meteor anchor


    【解决方案1】:

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

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

    它似乎工作。我怀疑你的问题在其他地方。

    【讨论】:

      猜你喜欢
      • 2012-11-27
      • 1970-01-01
      • 2019-05-12
      • 2014-12-03
      • 1970-01-01
      • 2018-03-23
      • 1970-01-01
      • 2022-11-06
      • 1970-01-01
      相关资源
      最近更新 更多