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

时间:2011-03-21 14:47:07

标签: javascript events backbone.js

我有一个使用iScroll来实现幻灯片演示的Backbone View。

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

});

3 个答案:

答案 0 :(得分:25)

可能不太明显,但backbone.js视图中的event属性仅用于DOM事件。自定义事件应绑定为James Brown mentioned above

答案 1 :(得分:24)

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

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

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

答案 2 :(得分:18)

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

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