2016-07-08 75 views
1

我遇到問題,當我嘗試從集合中獲取對象時,訂閱功能未按預期工作。例如:流星訂閱不使用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);