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”类被添加到我当前使用的视图中。我在警报消息上单击“确定”后,将加载下一个视图,这将终止当前显示的视图。。。。打了这个之后,我就算出了。