2013-10-24 71 views
2

我的路由器功能的定義如下鐵路由器不等待認購

this.route('time', { 
    template: "app", 
    yieldTemplates: { 'appNav': {to: 'top'}, 'time': {to: 'appPage'} }, 
    data: function() { 
     console.log("data is ready for time " + (personsSub.ready() && tenantsSub.ready() && teamsSub.ready())); 
     return { 
      dataReady: personsSub.ready() && tenantsSub.ready() && teamsSub.ready() 
     } 
    }, 
    waitOn: function(){ 
     return [personsSub, tenantsSub, teamsSub]; 
    } 
    }); 

3分的訂閱:

var personsSub = Meteor.subscribe("allPersons"); 
var tenantsSub = Meteor.subscribe("allTenants"); 
var teamsSub = Meteor.subscribe("allTeams"); 

在控制檯中我可以看到2個條目,當我瀏覽這個路線

data is ready for time false 
data is ready for time true 

我明顯不明白waitOn的意思。預期的結果是,該數據部分只調用一次,它被稱爲所有訂閱後'ready'

+0

什麼版本的鐵路路由器? [你的代碼應該在0.9下工作](https://github.com/EventedMind/iron-router/blob/0.9/DOCS.md#waiting-on-subscriptions-waiton)。 –

+0

它的工作原理,只是數據函數被調用了3次 –

回答

4

嘗試

waitOn: [personsSub, tenantsSub, teamsSub]; 

林不知道需要的功能/回報。

+0

感謝您的建議,但這不會改變任何行爲。我正在尋找避免多次調用的方法 –

+0

Akshat的解決方案適用於我,而function(){}不起作用,看起來這是正確的語法 –