Если я храню представление в переменной window.myView
, отрисуйте его, а затем вызовите консоль javascript:
$('#container').html('')
а затем вызовите:
$('#container').html(window.myView.$el)
Связанные события перестанут работать.
Я уверен, что это так, но:
- почему именно он работает таким образом?
- как перерисовать подчасти представления без потери привязок событий?
- почему вызов
myView.render()
не потеряет привязки событий?
Update:
Нашел эту статью. Это причина?
Убедитесь, что jQuery не выгружает ваши события, когда вы не хотите его
Если вы создаете приложение, где вы создаете представления на лету, и присоединяете/удаляете их в dom, у вас может быть проблема. Каждый раз, когда вы удаляете представление из dom, jQuery выгружает все события. Таким образом, вы не можете ссылаться на представление и удалять его из dom, а затем повторно присоединить его позже. Все ваши события были бы разгружены. Если вы хотите сохранить взгляды вокруг, лучше всего скрыть их, используя display: none. Однако вы не должны злоупотреблять этим и перерабатывать представления, которые вы не собираетесь использовать какое-то время (и предотвратите утечку памяти).