Meteorをバージョン1.0にアップグレードしてから、Iron-Routerから次のエラーが発生する人はいますか?
この問題を解決する方法を知っている場合は、ここに投稿してください。
ルートディスパッチはレンダリングされません。
onBeforeAction
でthis.next()
を呼び出すのを忘れましたか?
Router.map(function () {
Router.route('profileShow', {
waitOn: function () {
if (Meteor.user()) {
Meteor.subscribe('userData');
} else {
this.next();
}
},
data: function () {
if (Meteor.user()) {
return {profile: Meteor.user().profile};
}
}
});
});
最新バージョンのIronRouterには、下位互換性のない変更がありました。移行ガイドによると:
onRun
およびonBeforeAction
フックでは、this.next()
を呼び出す必要があり、pause()
引数を取る必要がなくなりました。したがって、デフォルトの動作は逆になります。たとえば、次の場合:
_Router.onBeforeAction(function(pause) {
if (! Meteor.userId()) {
this.render('login');
pause();
}
});
_
更新する必要があります
_Router.onBeforeAction(function() {
if (! Meteor.userId()) {
this.render('login');
} else {
this.next();
}
});
_
あなたの場合、本による修正は、onBeforeAction
の最後にthis.next()
を追加することです。ただし、むしろwaitOn
を使用する必要があります。
_waitOn: function () {
return Meteor.subscribe("userData");
}
_
このようにして、loadingTemplate
サブスクリプションの読み込み中に表示されるuserData
を設定できます。