2014-03-04 56 views
1

我有一個用戶配置文件頁面,有自己的導航項(即關於我,圖片等)我點擊這些功能來設置會話變量。流星 - 在車把條件下使用會話?

在我的模板,我想基於會話顯示內容(除非有一個更好的辦法)

例子:

{{#if activeTabIs "About Me"}} 
    {{> ProfileAbout}} 
{{/if}} 
{{#if activeTabIs "Pictures"}} 
    {{> ProfileGallery }} 
{{/if}} 

Template: userProfile 

...

// I've tried this 
Template.userProfile.activeTabIs = function() { 
    return Session.get('ActiveProfileTab'); 
}; 

// And this 
Handlebars.registerHelper('activeTabIs', function(){ 
    return Session.get("ActiveProfileTab"); 
}); 

Manager 

總是以上返回true並顯示一切。如果我只是使用一個幫手,如:

{{activeTabIs}} 

它的工作,因爲當我通過控制檯切換會議周圍動態更改。但是如果條件不起作用,把手。

如果有更好的方法來處理這個問題,我會喜歡一些想法。例如,如果我可以只有:

{{RenderActiveTab}} 

但是,我仍然想知道我在做什麼錯誤的條件。我引用了聯盟示例中的文檔,但它沒有使用會話。

回答

0

看起來這應該是一個全球性的輔助工作:

Handlebars.registerHelper('activeTabIs', function(tab){ 
    return Session.equals('ActiveProfileTab', tab); 
}); 

然後你就可以在你最初的例子中使用它在你的模板等。試一試,讓我知道它是否有效。

+0

工作就像一個魅力大衛。你真棒。謝謝......再次:) – user1447679

0

我想你可以用路由器來做到這一點。 (如鐵路由器)

這是改變模板的代碼,當用戶點擊該鏈接:

Router.map(function() { 
    this.route('home', {path: '/'}); 
    this.route('ProfileAbout', {path: '/about'}); 
    this.route('ProfileGallery', {path: '/gallery'}); 

    }); 

//html example 

<a href="/about">This shows the ProfileAbout template</a> 

更多關於如何使用鐵路由器:https://github.com/EventedMind/iron-router

//你可以做一些瘋狂的東西與它

+0

除非在鐵路路由器中有更多的高級選項,我不知道這一點並不完全相關。我已經路由到該頁面並嘗試基於會話中的嵌入式模板/查詢來過濾內容。我欣賞它,但。 – user1447679

+0

含義,我不想爲此分開路線。 :) – user1447679