我使用以下函数作为onBeforeAction
钩子的帮助器:
var gameFilter = function () {
this.subscribe('singleGame', this.params.slug);
var game = this.data();
if (game) {
if (game.multiplayer) {
this.redirect('multiPlayerPage', {slug: this.params.slug});
} else {
this.subscribe('singlePlayerPage', this.params.slug);
}
} else {
this.render(this.notFoundTemplate);
}
this.next();
};
我在我的路线中使用它:
onBeforeAction: [gameFilter, playerFilter]
现在这很棒。但是,我想将所有过滤器移动到不同的文件。所以我在lib
目录中创建了一个新文件,并将以下代码放在:
gameFilter = function () {
this.subscribe('singleGame', this.params.slug);
var game = this.data();
if (game) {
if (game.multiplayer) {
this.redirect('multiPlayerPage', {slug: this.params.slug});
} else {
this.subscribe('singlePlayerPage', this.params.slug);
}
} else {
this.render(this.notFoundTemplate);
}
this.next();
};
问题是,我得到一个ReferenceError,说没有定义gameFilter
。我认为这个问题是由Meteor的文件加载顺序引起的。有可能解决这个问题吗?
答案 0 :(得分:1)
我和Meteor有类似的问题。解决方法是将文件或文件夹的名称更改为数字,以便首先加载它。在我的情况下,它是一个名为media.js
的文件,我改为1_media.js
并且它有效