0

提供された JSON データを基に、基本的なグリッド レイアウトを提供する Backbone.js プラグインを作成しています。私の問題は、プラグイン自体を変更せずにイベントを 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 に答える