主干视图原型事件绑定

Backbone view prototype event binding

本文关键字:事件 绑定 原型 视图      更新时间:2023-11-08

我正在创建一个Backbone.js插件,该插件在提供JSON数据的情况下提供基本的网格布局。我的问题是,我不知道如何在不改变插件本身的情况下将事件绑定到View类。我宁愿不这样做——我宁愿插件的用户能够扩展视图,或者更改其原型以绑定自定义事件。

插件中的视图是一个基本视图,没有绑定任何事件。它还包含一些其他函数,为了简单起见,我省略了这些函数。

FlipCard.CardView = Backbone.View.extend({
    tagName: 'div',
    className: 'card',
// and more
});

我曾尝试在单独的app.js文件中使用prototype属性来绑定事件,但它们似乎没有被触发。

FlipCard.CardView.prototype.events = {
    'click .card' : 'alert'
};
FlipCard.CardView.prototype.alert = function(){
    alert("hello!");
};

我熟悉.extend({})函数,但除非我能以某种方式通知插件使用视图的扩展版本,否则这将不起作用。。。我宁愿不这么做。

对我应该在这里做什么有什么想法吗?

编辑:原来这是个愚蠢的错误。因为视图有类".cad",而我正试图将单击事件绑定到".cad),所以没有必要放入"click.cad"。相反,事件应该是:

FlipCard.CardView.prototype.events = {
    'click' : 'alert'
};

如果有人使用他们的插件,他们会像扩展Backbone.Model 一样扩展您的FlipCard.CardView

myApp.Views.myCardView = FlipCard.CardView.extend({
    events: {
        'click .card' : 'alert'
    },
    alert: function() {
        alert("hello!");
    }
}

这会创建一个插件视图的扩展版本,其中绑定了事件,并且不会以任何方式更改插件。然后,用户会像往常一样实例化它:

var someView = new myApp.Views.myCardView();