そこで、Backbone.jsを使用してJavaScriptコードを構造化し、モジュラーアプリケーションを使用し始めましたが、イベントに関して問題が発生しました。
フォームを処理して検証する単純なビューを作成したいと思います。将来的には、ライブ検証、ホバー効果などのすべてのJavaScript機能を追加したいと思います。
これは私が今持っている単純化されたコードです:
var Form = Backbone.View.extend({
attributes: {
att1 = 'att1',
att2 = 'att2'
},
events: {
'submit': 'validateFields'
},
initialize: function(element) {
this.el = $(element);
},
validateFields: function() {
alert(this.attributes.att1); //do something
return false;
}
});
var f = new Form('#formid');
私が抱えていた問題は、フォームを送信したときにvalidateFields関数が呼び出されないことです。また、コンストラクターでこれを使用してみました。
this.el.bind('submit', this.validateFields);
これで、最後のコードは機能しますが、検証関数内の「this」は、Formオブジェクトではなく、$('#formid')オブジェクトになります。