簡體   English   中英

單擊或路由更改后的Ember Router活動項

[英]Ember Router active item on click or route change

我有一個使用Ember Datastore從服務器中拉出的帖子列表,然后將其呈現在類似視圖的側邊欄列表中,每個帖子都使用{{action}}幫助程序生成了href,該幫助程序通過查找相應的路由器狀態來生成有效的href 。 單擊帖子可將其加載到內容輸出中。 所有這一切都完美。

我想在選擇某個項目時(例如,“處於活動狀態”)將一個類別添加到一個項目中,或者在單擊該項目時,或者當路由器狀態轉換為與href匹配的狀態時,例如:當用戶按下后退按鈕或直接導航到/ posts / 24,將選擇ID為24的帖子。

理想情況下,我希望將其解決方案與實際的Post記錄分開,因為它純粹是一種演示,我也想使用此方法以相同的原理突出顯示菜單項。

普遍接受的方法是什么?

編輯:

App.Router: Ember.Router.extend(
  root: Ember.Route.extend(
    goToPostsIndex: Ember.State.transitionTo('posts.index')
    goToAbout: Ember.State.transitionTo('about')
    goToShowPost: Ember.State.transitionTo('posts.show')

    index: Ember.Route.extend(
      route: '/'
      redirectsTo: "posts.index"
    )

    posts: Ember.Route.extend(
      route: '/posts'

      index: Ember.Route.extend(
        route: '/'
        connectOutlets: ((router) ->
          router.get('applicationController').connectOutlet('posts', App.posts)
        )
      )

      show: Ember.Route.extend(
        route: '/posts/:post_id'

        connectOutlets: (router, post) ->
          router.get('postsController').connectOutlet('post', post)
     )
   )

     about: Ember.Route.extend(
       route: '/about'
       connectOutlets: (router) ->
         router.get('applicationController').connectOutlet('about')
     )

    )
  ) 
)

這是我當前設置的小提琴: http : //jsfiddle.net/Pts7Q/31/

如果為jsfiddle提供示例代碼,則可能會為您的問題提供更加精確和完整的答案。

話雖如此,一種方法可能是創建綁定到selectedPostController(或selectedPost計算屬性)的“ isSelected” Post屬性。 在單擊或從URL初始化路由器或路由器/狀態時,可以將selectedPostController的值設置為選定的項目,從而觸發綁定以將update更新為當前選定的isSelected為true,將其他所有綁定為false。

然后,按照http://emberjs.com/documentation/#toc_binding-class-names-with-bindattr上的ember文檔進行操作,

“ class屬性可以像其他任何屬性一樣綁定,但是它還具有一些其他特殊行為。默認行為的工作方式與您期望的一樣。

但是,如果綁定到的值是布爾值,則該屬性的反划線版本將用作類(如果布爾值為true):

 <div {{bindAttr class="isSelected"}}>
   Post title here
 </div>

這將發出以下HTML(如果為true,則將其添加,如果為false,則將不添加任何類):

 <div class="is-selected">
   Post title here
 </div>

然后,將is-selected CSS類設置為所需樣式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM