如何在Backbone.js视图中触发/绑定自定义事件?

mel*_*yal 34 javascript events backbone.js

我有一个Backbone View,它使用iScroll来实现幻灯片放映.

iScroll发布一个onScrollEnd事件,但我似乎无法在View中绑定/订阅它:

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);
    }

});
Run Code Online (Sandbox Code Playgroud)

Dmi*_* G. 25

它可能并不明显,但eventbackbone.js视图中的属性仅用于DOM事件.自定义事件应该像James Brown上面提到的那样受到约束.

  • 对我来说,这个答案和接受的答案一样重要.谢谢. (2认同)

Bar*_*art 24

你的onScrollEnd事件绑定到视图的top元素; 当视图的HTML元素收到onScrollEnd事件时,将调用scrollEnd.

但是您在View对象上触发onScrollend事件,而不是元素.

所以你可能想说$(self.el).trigger('onScrollEnd');,或者直接调用函数:self.scrollEnd().


Jam*_*own 18

您应该直接或在init中调用该函数,添加:

self.bind('onScrollEnd', self.scrollEnd);
Run Code Online (Sandbox Code Playgroud)