2016-07-08 3 views
1

컬렉션에서 개체를 가져 오려고하면 문제가 발생합니다. 구독 기능이 예상대로 작동하지 않습니다. 예를 들어 :Meteor 구독 router.current() .params와 함께 작동하지 않습니다.

클라이언트 :

JS

서버
Template.Main.onCreated(function(){  
    var num = Router.current().params.taskid;  
    console.log(num); 
    this.subscribe('getTransaction',num); 
}); 

: 그것은 내가 아무것도 표시 할 수 없습니다 같이 내가 이것을 유지하는 경우

Meteor.publish('getTransaction', function(taskid){ 
    return Transactions.find({taskid:taskid}); 
}); 

이 값이 콘솔에서 보여 9입니다 그러나 변수 "num"을 명시 적 값으로 변경하는 경우 : 9 예상대로 작동합니다.

이 경우 구독이 작동하지 않는 이유를 알고 계십니까?

정말 고맙습니다.

답변

0

템플릿을 만들 때 라우터가 "준비가되어 있지 않습니다"라는 사실이 문제라고 생각합니다.

Router.route('/getTransaction/:_id', { 

    ...... 
    subscriptions: function() { 

     // add the subscription to the waitlist 
     this.subscribe('getTransaction', this.params._id).wait(); 
     }, 
    ................................. 
}); 

당신은 여기에 더 많은 옵션을 찾을 수 있습니다 : 시도를 작동하지 않는 경우, http://iron-meteor.github.io/iron-router/#wait-and-ready

을에 "당신이 (? 난 당신이 철 라우터를 사용하여 생각) 국도 특정 옵션에 가입을 배치 했 지연 "조금 setTimeout() 함수를 사용하여 구독. 좋아요 :

Meteor.setTimeout(function(){ 
    this.subscribe('getTransaction',num); 
}, 100); 
관련 문제