Я использую в приложении backbone, require.js и coffeescript. Программируя мое приложение, я обнаружил, что у меня проблема с представлениями. Извините за мой английский ! =) * * Тысяча одна
Мой дом:
<div id="header"></div>
<div id="container"></div>
Часть моего приложения:
class AppRouter extends Backbone.Router
routes:
'': 'home'
'u/:user': 'user'
'events: 'events'
'messages': 'messages'
events: () ->
events = new EventsView
events.events()
messages: () ->
messages = new MessagesView
messages.messages()
class MessagesView extends Backbone.View
template: window.Handlebars.compile MessagesTpl
el : '#container'
events :
'click #test' : 'test'
test: () ->
console.log 'test'
messages: () ->
#fecth and bind render method on 'all'
class EventsView extends Backbone.View
template: window.Handlebars.compile EventsTpl
el : '#container'
events: () ->
#fetch and bind render method on 'all'
У меня следующая проблема:
Когда я создаю экземпляр и вызываю в маршрутизаторе («сообщения») messagesView, я делаю выборку, и рендер работает нормально. Затем, когда маршрутизатор переходит к другому маршруту («события») и вызывает eventsView, происходит то же самое, он правильно отображает представление.
Но при повторной навигации по маршруту «сообщения» событие «тест» запускается два раза! , один раз для каждого экземпляра!
Я обнаружил, что если я вызову маршрутизатор $ ("# container"). Unbind () предыдущего экземпляра MessagesView, это решит проблему, но я не знаю, действительно ли мое решение действительно хорошо.
Я боюсь, что DOM создается злом и имеет большую нагрузку. Вы знаете, что вы можете сделать с этим?
Большое спасибо за все! Grettings из Аргентины!
Alejandro