Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > Marionette. View events - событие вешается дважды


Автор: numerovan 8.1.2017, 14:28
Фреймворк Marionette (Backbone).
Почему когда создаю View, вешаю в events событие, то события накладываются поверх ... например:
Код

events: {
    'click @ui.my_el': 'my_fn'
}

 и при создании этого вида, поверх накладывается дополнительно это событие click?
Такое ощущение что данная view-ха остается, хотя она после затирается, при переходе на др. вкладки, другой view-хой.

Или там надо спец. отключать событие click ... если спец., то становится уже неудобно использовать данную технику.

Как я решил эту проблему сейчас, назначаю при событии render ... но так не очень красиво
Код


onRender: function(){
                        console.log('render');
                        
                        var that = this;
                        this.getUI('btnUpdate').on('click', function(){
                            that.write();
                        });
                        this.getUI('btnDelete').on('click', function(){
                            that.delete();
                        });
                    },


и вот вопрос мучает: почему по другому не гладко работает ...

Автор: numerovan 10.1.2017, 22:32
Решил проблему, в общем лучше делать так:
записываем вьюху в фиксированную переменную
window.app.view.my = new MyView();

а после вызываем только ее и после работаем тольк с window.app.view.my
window.app.view.my.render()

если снова в нее записать объект
window.app.view.my = new MyView();

события, во этом объекте, будут вызываться столько раз сколько записывали новый объект.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)