2014-12-27 45 views
1

使用Twitter Bootstrap和Ember,我試圖設置下拉菜單中的「活動」狀態,當選擇一個子項時,該孩子使用「每個」循環呈現。在Twitter上設置「活動」狀態在Ember中的引導下拉與「每個」助手呈現下拉項目

如:

我的導航欄的片段在徽:

ul.nav.navbar-nav 
    link-li 
    link-to 'index' | Home 
    link-li classNames='dropdown' 
    a.dropdown-toggle href='#' data-toggle='dropdown' Items <span class='caret'></span> 
    ul.dropdown-menu 
     each item in items 
     link-li 
      link-to 'item' item 
      = item.name 
     link-li 
     link-to 'items.new' | Create New... 

鏈接利助手從Add "active" class to bootstrap dropdown menu when dropdown link selected (with Ember link-to)

export default Ember.Component.extend({ 
    tagName: 'li', 
    classNameBindings: ['active'], 

    active: function(){ 
    return this.get('childViews').isAny('active'); 
    }.property('[email protected]') 
}); 

這在這些情況下的偉大工程:

  • 家是高亮的當index路線上時items.new路線
  • 的下拉本身時強調items.new路線上
  • 每個項目時,每個item路線
  • 創建新鏈路上突出強調d

但是,下拉不會會在每個item路線上得到突出顯示。

我已經調查,只要發現this.get('childViews')只返回一個「創建新的」視圖,看似忽略其他項目。它似乎與each助手有關,因爲在「新建」中添加的任何其他常規鏈接都可以正常工作。那就是我的n00b Ember知識結束的地方。

任何幫助,將不勝感激!

回答

0

我找到了一個解決方案,這一點,但它是一個有點哈克......

給定一組路線是這樣的:

Router.map(function() { 
    this.resource('items', function() { 
    this.route('new'); 
    }); 
    this.resource('item', {path: '/items/:item_id'}, function() { 
    this.route('edit'); 
    }); 
}); 

我能得到所有相關的導航鏈接通過增加突出隱藏的「虛擬」鏈接使用link-li這個問題的幫手。在徽

導航欄的代碼片段:

ul.nav.navbar-nav 
    link-li 
    link-to 'index' | Home 
    link-li classNames='dropdown' 
    a.dropdown-toggle href='#' data-toggle='dropdown' Items <span class='caret'></span> 
    ul.dropdown-menu 
     span.hidden 
     link-to 'items' | Items 
     link-to 'item' | Item 
     each item in items 
     link-li 
      link-to 'item' item 
      = item.name 
     link-li 
     link-to 'items.new' | Create New... 

通過在link-to 'items'link-to 'item'虛擬鏈接加入,這讓家長link-li輔助工作,妥善突出下拉時任子路由的活躍。

如果有人想出一個更優雅的解決方案,請務必在此發佈!