Подтвердить что ты не робот

Как запускать/связывать пользовательские события в образах Backbone.js?

У меня есть Backbone View, который использует iScroll для реализации слайд-шоу.

iScroll публикует событие onScrollEnd, но я не могу привязываться/подписываться на него внутри представления:

App.Views.Scroller = Backbone.View.extend({

    events: {
        'onScrollEnd' : 'scrollEnd'
    },

    initialize: function(){
        var self = this;
        this.scroller = new iScroll('content-scroller', {
            onScrollEnd: function() {  
                self.trigger('onScrollEnd');
            }
        });     
    },

    scrollEnd: function(e){
        // never called :(
        console.log(e);
    }

});
4b9b3361

Ответ 1

Ваше событие onScrollEnd привязано к элементу верхнего вида; scrollEnd вызывается, когда элемент HTML представления получает событие onScrollEnd.

Но вы вызываете событие onScrollend в объекте View, а не в элементе.

Итак, вы, вероятно, захотите сказать $(self.el).trigger('onScrollEnd'); вместо этого или, возможно, напрямую вызовите функцию: self.scrollEnd().

Ответ 2

Это может быть не очевидно, но свойство event в представлениях backbone.js используется только для событий DOM. Пользовательские события должны быть связаны как Джеймс Браун, упомянутый выше.

Ответ 3

Вы должны вызвать функцию напрямую или в init, добавьте это:

self.bind('onScrollEnd', self.scrollEnd);