web-dev-qa-db-ja.com

Meteor v 1.0およびIron:Router

Meteorをバージョン1.0にアップグレードしてから、Iron-Routerから次のエラーが発生する人はいますか?

この問題を解決する方法を知っている場合は、ここに投稿してください。

ルートディスパッチはレンダリングされません。 onBeforeActionthis.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};
            }
        }
    });
});
20
meteorBuzz

最新バージョンの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を設定できます。

29
user3374348