3

キーダウンによるユーザー入力を検証したい。このためには、キーダウン イベントが必要です。残念ながら、カスタム モデル イベントしか見つかりませんでした。

initalize: function(){
    this.model = new ModelClass();
    this.model.bind("keydown", this.validate, this);
}

そのアプローチは確かにモデルイベントには問題ありませんが、これがビューやUI関連のものには正しい方法だとは思いません...

より良い説明をするために、これが私のイベントの使用方法です。

var SomeView;

SomeView = Backbone.View.extend({
    events: {
        "keydown input#some-field": "validate" // custom event
        , "change input#some-field": "doSomethingElse" // predefined backbone event
    },
    validate: function(attr){
        // validation
    }
});

では、ビューで呼び出し可能なカスタム バックボーン イベントを作成する方法は何ですか?

4

2 に答える 2

3

ビューで呼び出し可能なカスタム バックボーン イベントを作成する方法は何ですか? backbone.view のデフォルトはイベントをサポートするようになっているので、あなたの問題は問題ではないように感じます。あなたが望むようなコードを書くことができます:

//This is the right thing to do
SomeView = Backbone.View.extend({
    events: {
        "keydown input#some-field": "validate" // custom event
        , "change input#some-field": "doSomethingElse" // predefined backbone event
    },
    validate: function(attr){
        // validation
    }
});

参考はこちら: http://backbonejs.org/docs/todos.html#section-22

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~

編集:ここで見ることができます: http://backbonejs.org/docs/backbone.html#section-156

最も重要な文は:</p>

this.$el.delegate(selector, eventName, method);

バックボーンのイベントは jquery のデリゲート (http://api.jquery.com/delegate/) であるため、イベントをサポートする jQuery のデリゲート、バックボーンが利用可能です。

于 2012-07-11T15:22:35.233 に答える
2

問題が何であるかを理解しているかどうかはわかりません。あなたの 2 番目の例は、バックボーン ビューでイベント ハンドラーを設定する方法です。Backbone の validate メソッドはモデル内にのみ存在し、モデルの set と save が呼び出される前に自動的に呼び出されます。デフォルトでは未定義のままです。ビューで検証している場合でも、あなたのやり方はうまくいくはずです。しかし、イベント処理関数にはイベントが渡されるだけだと思います。だからきっとそうなるはず

validate: function (event) {
   // do Something here
}

また、バックボーン イベントの委譲は el で行われることに注意してください。そのため、イベント委任が機能するためには、手動で設定するか、レンダリングする必要があります

于 2012-07-11T15:28:06.233 に答える