0

在我的 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>

其中有嵌套在#if 中的助手选项卡(根据meteor docs,这是可以接受的,因为他们添加了一个扩展名到车把。)

然后我有咖啡脚本:

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')

问题是两个选项卡始终呈现,我不知道为什么

4

1 回答 1

1

您还需要为辅助语句添加条件!目前它返回'editedTab',但它不是null,所以它返回true。(条件是if(Session('editedTab')) {..}

将您的助手更改为:

Template.leftNav.tabIs = (path) ->
  Session.get("tabIs") is path

(使用 equals 可以比上面更有效地检查相等性:)

Template.leftNav.tabIs = (path) ->
  Session.equals "tabIs", path
于 2013-05-16T07:53:51.297 回答