Backbone View: функция выполняется несколько раз

Я запускаю магистральный скрипт, в котором я могу переходить назад и вперед между представлениями. Использование кнопок «Далее» и «Предыдущий» с простым скриптом навигации по маршрутизатору.

С точки зрения шага 1 я использую этот скрипт для перехода на следующую страницу:

nextStep: function() {

    //get referrerTypes
    OF.getReferrerTypes();
    OF.getClinics();

    OF.router.navigate('step/2', {trigger: true});

}

Теперь вот моя проблема. Когда я перехожу к шагу/2 и возвращаюсь к шагу/1 (также router.navigate), каким-то образом функции на шаге/1 загружаются дважды.

Поэтому, когда я перехожу к шагу/2 во второй раз, функция выполняет функцию nextStep дважды. Или, когда я возвращаюсь назад и вперед во второй раз, он запускает функцию nextStep трижды.

Я попытался исправить это, выполнив step1view.remove в маршрутизаторе. Я даже сделал удаление. Однако это совсем не помогает.

Вот скрипт в роутере, который загружает вид

goToStep1: function() {
    require(['./models/step1Model', './views/step1View'],function(Step1Model, Step1View) {
        if (step1View) {
            step1View.remove();
            delete step1View;
        }

        step1View = new Step1View;
        step1View.render();

    });

}

Кто-нибудь может помочь здесь? Мне действительно нужно запустить функции только один раз.

Заранее спасибо!


person BonifatiusK    schedule 10.02.2014    source источник
comment
Почему бы просто снова не вызвать step1View.render() без удаления или повторного создания экземпляра?   -  person Kevin Jantzer    schedule 10.02.2014


Ответы (1)


Попробуйте отменить делегирование событий:

step1View.remove();
step1View.undelegateEvents();
person Rida BENHAMMANE    schedule 10.02.2014