2014-09-19 37 views
0

如何防止在下一個模板/路線中顯示最後一個模板的數據?如何防止使用Iron-Router在下一個模板中呈現最後路由的數據?

我在接下來的路徑/模板的數據呈現問題,直到返回查詢。這是等待什麼?

我試過用waitOn,但是這條路線應該是被動的,所以我不想整個路線重新渲染。

注意:這個問題不同於:meteorjs iron-router waitOn and using as data on rendered,因爲我沒有使用Collection.find({})查詢,我正在使用this.subscribe('publication')類型的查詢。

目前我的路線的結構像這樣,這工作,但它呈現其他內容收集數據之前認購完成:

this.route('news', { 
    path: '/news', 
    template: 'contentList', 
    data: function() { 

    var content = this.subscribe('content-topics', Session.get('topics'), contentTopicsItemLimit); 
    var macroTopics = this.subscribe('macro-topics'); 

    var data = { 
    macroTopics: macroTopics, 
    content: content 
    }; 
    return data; 

    } 
}); 

我使用waitOn嘗試過,但我不知道怎麼樣用這種類型的查詢來構造它。

那麼構建這個同時保持反應性的最佳方式是什麼?

回答

0

嘗試

waitOn: function() { 
    return [Meteor.subscribe('content-topics', Session.get('topics'), contentTopicsItemLimit), 
    Meteor.subscribe('macro-topics')] 
} 

本應該呈現來自訂閱中的數據帶到客戶端之後。

+0

Andreas:我已經嘗試了很多這個。這個問題是它完全重新加載頁面,並且由於某種原因(這部分可能是不相關的並且可修復的)它會弄亂我的會話變量。但是用戶可以在這裏選擇不同的主題 - 一個或多個主題 - 所以我寧願頁面沒有完全重新加載,只是爲了刷新內容。 – JohnAllen 2014-09-20 05:23:24

+0

你的意思是改變使用waitOn會導致整個頁面刷新 - 就像在瀏覽器中重新加載URL一樣?我沒有看到使用waitOn的行爲。你確定它沒有以該頁面的鏈接格式爲準? – dcsan 2014-09-21 16:58:53

+0

我也沒有看到這種行爲。只需根據路由器定義更改頁面的各個部分。也許你沒有使用{{> yield}}來渲染頁面內部的路由,從而重新加載整個頁面?你能發表一個你的模板的例子 - contentList和主模板嗎? – 2014-09-23 20:22:15

相關問題