4

私は優れたフレームワークBackbone.jsを使用して単純なアプリケーションに取り組んでいます。たとえば、このように構成可能なバックボーンビューイベントセレクターを作成できれば、js構文が間違っているために機能しません。

return Backbone.View.extend({
    events: {
        'click ' + someConfigSelector: 'doSomethink'
    }
})

バックボーンビューでイベントを設定する他の方法はありますか?

4

3 に答える 3

7

このフィドルをチェックしてください:http://jsfiddle.net/phoenecke/hyLMz/1/

eventsオブジェクトの代わりに関数を使用できます。

return Backbone.View.extend({
    events: function() {
        // add some normal events to the hash
        var e = {
            'click #foo': 'doSomething1',
            'click #bar': 'doSomething2'
        };
        // add one where key is calculated
        e['click ' + someConfigSelector] = 'doSomething';
        // return events hash
        return e;
    }
});

このようにして、構成に基づいてキーが計算されるイベントを追加できます。

于 2013-03-15T14:59:07.307 に答える
1

この関数はいつでも呼び出されるので、動的イベントには以下の方法をお勧めしますdelegateEvent

ビューの関数が実行された後に呼び出されるdelegateEventのドキュメントによると、この手法を使用してイベントを動的に作成できます。initialize

var TestView = Backbone.View.extend({    
    events: function () {
        var evt = {};
        evt['click ' + this._extraSelector] = '_onButtonClick';
        return evt;
    },
    initialize: function(config) {
        // passed in the selector, or defaulted 
        this._extraSelector = config.extraSelector || "BUTTON.default";
    }, 

    _onButtonClick: function() { }
});

var v = new TestView({ extraSelector: 'BUTTON.sample' });
于 2013-03-15T14:59:26.970 に答える
0

あなたはこのようにそれを行うことができます:

return Backbone.View.extend({
    events: { },

    initialize:function() {
        this.events['click ' + someConfigSelector] = 'doSomethink';
    }
})

ただし、バックボーンでイベントを宣言する方法の規則をやや破り、コードを読みにくくします。おそらく誰かがより良いアプローチを持っています。

于 2013-03-15T14:28:37.203 に答える