【发布时间】: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 );
},
【问题讨论】: