骨干视图原型事件绑定

时间:2012-07-16 22:04:27

标签: javascript backbone.js prototype

我正在创建一个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({})函数,但除非我能以某种方式告知插件使用视图的扩展版本,否则这将无效...我宁愿不这样做。

关于我应该在这做什么的任何想法?

编辑:原来这是一个愚蠢的错误。因为视图有类'。card'而我试图将click事件绑定到'.card',所以没有必要输入'click .card'。相反,事件应该是:

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

1 个答案:

答案 0 :(得分:0)

如果有人要使用他们的插件,他们会像你扩展FlipCard.CardView

一样扩展你的Backbone.Model
myApp.Views.myCardView = FlipCard.CardView.extend({
    events: {
        'click .card' : 'alert'
    },
    alert: function() {
        alert("hello!");
    }
}

这会创建一个扩展版本的插件视图,并将事件绑定到它,并且它不会以任何方式改变插件。然后,用户将正常实例化它:

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