在我的meteor.js应用程序中,我有以下模板:
<ul class="nav nav-tabs" id="userTabs">
{{#if tabIs "editedTab"}}
<li class="active">
<a class='tabButton' id="editedTab">Edited</a>
</li>
{{/if}}
{{#if tabIs "starredTab"}}
<li class="active">
<a class='tabButton' id="starredTab">Starred</a>
</li>
{{/if}}
</ul>
<div id="usernav" class="tab-content">
{{#if tabIs "editedTab"}}
<div id="edited" class="tab-pane active">
<ul>
{{#each edited}}
<li><a class="left-nav" href="{{entryLink this}}">{{title}}</a></li>
{{/each}}
</ul>
</div>
{{/if}}
{{#if tabIs "starredTab"}}
<div id="starred" class="tab-pane active" >
<ul>
{{#each starred}}
<li><a class="left-nav" href="{{entryLink this}}">{{title}}</a></li>
{{/each}}
</ul>
</div>
{{/if}}
</div>
哪个帮助器tabIs嵌套在#if中(根据meteor文档,这是可以接受的,因为它们已添加到把手中。)
然后我有coffeescript:
Template.leftNav.tabIs = ->
Session.get('tabIs')
Template.leftNav.events =
'click .tabButton' : (evt) ->
$el = $(evt.target)
Session.set( 'tabIs' , $el.attr('id'))
并在Meteor.startup:
中播种会话变量Meteor.startup ->
Session.set('tabIs', 'editedTab')
问题是两个标签都在任何时候呈现,我不知道为什么
答案 0 :(得分:1)
你也需要在helper语句中添加一个条件!目前它返回的'editedTab'不是null
所以它返回true。 (条件为if(Session('editedTab')) {..}
)
改变你的助手:
Template.leftNav.tabIs = (path) ->
Session.get("tabIs") is path
(使用equals可以比上面更有效地检查相等性:)
Template.leftNav.tabIs = (path) ->
Session.equals "tabIs", path