2015-02-01 5 views
0

Я пытаюсь установить мой selectedDocId при прокладке на страницу, но Meteor бросает undefined. Я использую onBeforeAction в попытке сохранить id, который объединен в конце моего URL-адреса через /:id, но я не могу их выровнять.this._id undefined in Meteor

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

      onBeforeAction: function(){ 
       console.log('speaker route has run'); 
       Session.set('selectedDocId', this._id); 
       //returns undefined 
       console.log(this._id); 
       this.next(); 
      } 
     }); 

     Template.speaker.helpers({ 

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

     }); 

ответ

1

Вместо this._id используйте this.params._id так же, как вы делали в data крючок.

+0

спасибо - в чем же разница? does 'this.params._id' означает, что он анализирует ответ, где, поскольку' this._id' просто ссылается на объект вида? – redress

+0

Контекст ('this') - текущий маршрут. Когда маршрут проходит, он анализирует свои параметры, сохраняя их в 'this.params'. 'this._id' будет доступен в шаблоне (не на маршруте), потому что его контекст является документом. –

Смежные вопросы