0

我有一个辅助导航,用于某些视图但不是全部。因此,我在使用辅助导航的视图中包含以下内容,该导航没有问题:

  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')' 函数执行后更新并且因此没有菜单项具有“活动”类。

那么,如何在辅助导航视图加载后更新活动导航项?

4

1 回答 1

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
于 2013-05-22T07:09:28.217 回答