2013-05-22 50 views
0

我有一些輔助導航,用於某些視圖,但不是全部。因此,我包括使用該不會有問題的作品二級導航意見如下:使用jQuery更新重複使用的BackboneJS視圖

setupNavigationSecondary: => 
    view = new App.Views.Users.NavigationSecondary(navigation_active: ".navigation-secondary-manage") 
    @$(".navigation-secondary").replaceWith(view.render().el) 

你會發現我通過了,它告訴第二個功能菜單項標記爲活動其中「navigation_active」的參考。二級導航視圖具有以下以「活動」類添加到右鍵菜單項:

navigation_active: "" 

    initialize: (options) -> 
    @navigation_active = options.navigation_active 

    setActiveNavigationItem: => 
    if @navigation_active.length 
     $(document).ready => 
     $(@navigation_active).parent().addClass('active') 

    render: -> 
    $(@el).html(@template()) 

    @setActiveNavigationItem() 

    return this 

問題:

一切正常,當頁面第一次直接加載通過URL中瀏覽器,即正確的輔助導航項目具有「活動」類。如果我從其他地方開始或者轉到其他地方並使用輔助導航返回到視圖 - 在執行'$(@ navigation_active).parent()。addClass('active')'函數後屏幕上的視圖會更新並且因此沒有菜單項具有「活動」類。

那麼,如何在輔助導航視圖加載後更新活動導航項?

+1

進一步的研究,我發現,我可能不應該重新創建setupNavigationSecondary()函數的視圖。我可能會創建同一視圖的多個實例.... –

+0

爲什麼在$(@ navigation_active).parent()。addClass('active')'函數執行後屏幕上的視圖已更新? –

+0

當路由器被觸發時,新的視圖被啓動。通過在$(@ navigation_active).parent()。addClass('active')後面放置一條警告消息,我可以看到「活動」類被添加到我當前使用的視圖中。只要我點擊提示信息上的「確定」,下一個視圖就會被加載,這會殺死當前顯示的視圖....輸入後,我就完成了。 –

回答

0

我忘了一個重要的項目,現在問題解決了。

setActiveNavigationItem: => 
    if @navigation_active.length 
     $(document).ready => 
     $(@navigation_active).parent().addClass('active') 

應該

setActiveNavigationItem: => 
    if @navigation_active.length 
     // line removed - we don't need to wait for the DOM to be ready 
     @$(@navigation_active).parent().addClass('active') // @ symbol