У меня есть вторичная навигация, которая используется для некоторых видов, но не для всех. Таким образом, я включаю следующее во взглядах, которые используют вторичную навигацию, которая работает без проблем:Обновление reused BackboneJS просмотров с jQuery
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') 'выполняется и поэтому элементы меню не имеют «активного» класса.
Итак, как я могу обновить активный элемент навигации после загрузки дополнительного навигационного представления?
Дальнейшие исследования, я обнаружил, что я, вероятно, не пересоздать представления функции setupNavigationSecondary(). Я, вероятно, делаю несколько экземпляров одного и того же вида .... –
Почему обновленные представления на экране обновляются после функции $ (@ navigation_active) .parent(). Выполняется функция addClass ('active') '? –
Когда маршрутизатор запускается, начинается новое представление. Поместив предупреждающее сообщение после $ (@ navigation_active) .parent(). AddClass («active»), я вижу, что «активный» класс добавляется в представление, которое я использую в настоящее время. Как только я нажимаю «ОК» в предупреждающем сообщении, загружается следующее представление, которое убивает отображаемое в настоящее время представление ... после ввода этого параметра я только что обработал его. –