2015-01-31 215 views
0

我有一個點擊按鈕關聯此功能的路由事件:Session.set()在流星

'click .single-speaker-info a': function(ev, speaker){ 
    ev.preventDefault(); 
    Session.set('selectedDocId', this._id); 
} 

但我想它在命中這條路線發生

Router.route('speaker', { 
     path:'/speakers/:_id', 
     template: 'speaker', 
     data: function(){ 
      return Speakers.findOne(this.params._id); 
     }, 

     //my attempted solution 
     selectedDocId: function(){ 
      Session.set('selectedDocId', this._id); 
     } 
    }); 

但我找不到有關如何在路線上執行方法的任何文檔。

這裏是Template.helper即時通訊使用到get設置

 Template.speaker.helpers({ 

      editingDoc: function(){ 
       return Speakers.findOne({_id: Session.get('selectedDocId')}); 
      } 

     }); 

回答

1

財產林,但我無法找到如何在路徑上執行方法的任何文件。

鐵路由器提供了許多hooks

  • onRun < - 也許你需要什麼
  • onRerun
  • onBeforeAction
  • onAfterAction
  • 的onStop
1

您可以使用Template.x.rendered,一旦頁面呈現,該塊中的任何代碼都將被執行。當然這不會在你的路由器中。

你的情況:

Template.speaker.rendered = function() { 
    //Get data from router 
    var data = Router.current().data(); 

    Session.set('selectedDocId', data._id); 
}