0

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

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

FlipCard.CardView = Backbone.View.extend({

    tagName: 'div',

    className: 'card',

// and more

});

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

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

FlipCard.CardView.prototype.alert = function(){
    alert("hello!");
};

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

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

编辑:原来这是一个愚蠢的错误。因为视图有“.card”类,并且我试图将点击事件绑定到“.card”,所以没有必要放入“点击.card”。相反,事件应该是:

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

1 回答 1

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();
于 2012-07-16T22:11:41.717 回答