バックボーンモデルからデータを取得するフォームがあります。フォームが表示されると、初期値はバックボーン モデルに設定されています。ここで、フィールドが編集された場合、フィールドに変更が加えられるとすぐに「保存」ボタンを有効にしたいと考えています。ただし、フィールド値を変更して元の値に再度変更すると、モデルを保存できる「保存」ボタンが再び無効になるはずです。 2/
モデルをテンプレートにバインドするためにbackbone.js と backbone.stick ( http://nytimes.github.io/backbone.stickit/ ) を使用しています。
モデルをパラメーターとして次のようにビューを作成します
RegionManager.show(new app.myView({
model : new app.myModel(
{id: 1})
}));
私のモデル値は次のようなものです:
{
"id":1, "name:"a" , "age":21
}
ビューは次のとおりです。
myView = Backbone.View.extend({
template: _.template( $("#template").html() ),
events: {
"click #save" : "update",
},
bindings: {
'#id': 'id',
'#name': 'name',
'#age': 'age'
},
initialize: function () {
if(this.model){
this.model.fetch();
},
render: function () {
this.$el.html( this.template );
this.stickit(); //used library http://nytimes.github.io/backbone.stickit/
Backbone.Validation.bind(this);
},
update: function() {
this.model.save (
{success: this.success_callback, error: this.error_callback});
},
success_callback: function (model, response) {
},
error_callback: function (model, response) {
alert('error.');
}
});
私のテンプレートは次のようになります
<script type="text/template" id="template">
<form id="myForm " >
<fieldset>
<label>Name</label>
<input type="text" id="name" name="name" />
<label>Age</label>
<input type="text" id="age" name="age" />
<input type="hidden" id="id" name="id"/>
</fieldset>
<a id="save" disabled >Save Changes</a>
</form>
イベントをバインドする場所と、ユーザーが何らかの値を変更したことを知る適切な方法とは何か、フォームに変更がない場合はボタンを無効にし、変更が加えられた場合は有効にする方法について混乱しています。