2016-07-11 13 views
0

私は鉄製のルータを釘付けにしていたと思っていましたが、根本的なテンプレート以外の表示をしていない問題が何らかの理由で表示されています。Iron Router - ルーターが動作しなくなった(v1.3)

基本的に私はメインビュー用のデフォルトレイアウトテンプレートを持っています。次に、基本的に異なるユーザーリストを表示する動的なルートがあります。

あなたはここで、これを見ることができます:

placelist.meteorapp.comを - メイン

placelist.meteorapp.com/cmeelaterを - 動的なユーザーリスト

メインビューは完全に罰金です(ログインしていますダイナミックサブルート(/ name-of-list)のテンプレートは表示されません。代わりにデフォルトテンプレートが表示されます。

これまでは機能していましたが、今は少し失われています。どんな助けも非常に高く評価されます。 (私は周りに情報を突き出した)。

のadditonal情報:

route.jsに以下の何が起こっているが、セッション変数がURLパラメータからクエリに渡さです。これは、URL paramに基づいてそのユーザのリストを取得し、これを表示するために "userListsShared"テンプレートを使用する必要があります(btwこれは、{{> userListsShared}}をメインテンプレートに挿入するだけですが、 。

私はあなたがそのテンプレートを使用するルートで使用するテンプレートを宣言したと思っています - ある継承の事が起こっていますか?

Router.configure({ 
    layoutTemplate: 'userListsShared', 
    loadingTemplate: 'loading', 
    waitOn: function() { 
     return Meteor.subscribe('posts'); 
     return Meteor.subscribe('userposts'); 
    } 
}); 

Router.map(function() { 
    this.route('main', { 
       path: '/', 
       template: 'main' 
      } 
    ); 
    this.route('shared', { 
     path: '/:sharelink', 
     template:'userListsShared', 
     data: function() 
       { 
        Session.set('curShareList', this.params.sharelink); 
       } 

}); 

答えて

0

Router.mapはIron Routerで非推奨です。今すぐ各ルートを定義するにはRouter.routeを使用する必要があります。また、dataメソッドを使用してセッション変数を設定しないでください。このメソッドはページコンテキストを定義するためのもので、オブジェクトを返すことを期待しています。次のようにonBeforeActionメソッドを使用してください。

// If the route name and template are the same, you can just specify the name. 
Router.route('/', { 
    name: 'main' 
}) 

Router.route('/:sharelink', function() { 
    name: 'shared', 
    template: 'userListsShared' 
}) 

// The 'only' property is a list of what routes the function will be called before. 
Router.onBeforeAction(
    function() { 
    Session.set('curShareList', this.params.sharelink); 
    }, 
    only: ['shared'] // You could also use "except: ['main']" instead 
}); 

公式ガイドをご覧ください。それは、プロセスを説明します:http://iron-meteor.github.io/iron-router/

+0

素晴らしい、おかげで私はそれに打撃を与えるだろう。 – cmee

+0

こんにちは、大丈夫ですので、以下は最終的な修正と思われます。 exceptを使うことは、 "この場合はこのデフォルトのレイアウトを使う"という仕事をするように思えた。とにかく、正しい方向に私を指してくれてありがとう... – cmee

0

はここで最終的なコードです:

Router.configure({ 
    layoutTemplate: 'main', 
    loadingTemplate: 'loading', 
    waitOn: function() { 
     return Meteor.subscribe('posts'); 
     return Meteor.subscribe('userposts'); 
    } 
}); 


Router.route('/', function() { 
    this.layout('main'); 
    this.render('main'); 
    except:['userListsShared'] 
}); 

Router.route('/:sharelink', function() { 
    this.layout('userListsShared'); 
    this.render('userListsShared'); 
    var thisuserlist = this.params.sharelink; 
    //var routeName = Router.current().route.getName(); 
    //console.log("routeName = " + routeName); 
    Session.set('curShareList', this.params.sharelink); 
});