我是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 );
},
答案 0 :(得分:0)