Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 使用jQuery更新重用的BackboneJS视图_Backbone.js_View - Fatal编程技术网

Backbone.js 使用jQuery更新重用的BackboneJS视图

Backbone.js 使用jQuery更新重用的BackboneJS视图,backbone.js,view,Backbone.js,View,我有一个辅助导航,用于某些视图,但不是所有视图。因此,我在使用二次导航的视图中包括以下内容,二次导航工作正常: setupNavigationSecondary: => view = new App.Views.Users.NavigationSecondary(navigation_active: ".navigation-secondary-manage") @$(".navigation-secondary").replaceWith(view.render().

我有一个辅助导航,用于某些视图,但不是所有视图。因此,我在使用二次导航的视图中包括以下内容,二次导航工作正常:

  setupNavigationSecondary: =>
    view = new App.Views.Users.NavigationSecondary(navigation_active: ".navigation-secondary-manage")
    @$(".navigation-secondary").replaceWith(view.render().el)
您会注意到我传递了一个“navigation\u active”的引用,它告诉辅助导航要标记为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\u active).parent().addClass('active')”函数后更新,因此没有菜单项具有“active”类


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

我忘记了一个重要项目,问题现已解决

  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

进一步研究,我发现我可能不应该在setupNavigationSecondary()函数中重新创建视图。我可能正在创建同一视图的多个实例……为什么在执行“$”(@navigation\u active).parent().addClass('active')”函数后屏幕上的视图会更新?触发路由器时,会启动新视图。通过在$(@navigation\u active).parent().addClass('active')之后放置一条警报消息,我可以看到“active”类被添加到我当前使用的视图中。我在警报消息上单击“确定”后,将加载下一个视图,这将终止当前显示的视图。。。。打了这个之后,我就算出了。