Backbone.js:ブラウザイベントの取り扱いと削除の表示を理解する
-
28-10-2019 - |
質問
私はそのように見えるビューと関連するモデルをいじり回しています:
App.Views.Addresses = App.Views.Addresses || {};
App.Views.Addresses.Address = Backbone.View.extend({
events: {
"click button#foo" : "clear"
},
initialize: function(model){
this.address = model.model;
this.address.view = this;
_.extend(this, Backbone.Events);
this.render();
},
render: function(){
... rendering stuff
},
clear: function(){
this.address.clear();
}
});
と
var Address = Backbone.Model.extend({
url: function() {
... url stuff
},
clear: function(){
this.destroy();
this.view.remove();
}
});
ここで2つの問題に直面しています。最初の1つ:
ソースにID = "foo"を備えたボタンがあり、このボタンの「クリック」イベントをキャッチし、「クリア」イベントを発射してもらいたいと思います。問題:これは機能しません。
とにかく私のモデルで「クリア」を手作業で呼び出すと、サーバー上のデータがきれいに削除されますが、ビュー自体を削除しません。それが2番目の問題です。うまくいけば、もっと経験豊富な誰かが私を啓発することができます。
事前のフェリックス
解決
最初の問題:
- ボタンは、ビューによってレンダリングされる要素の内側にある必要があります。
- 内側の要素のみへのバックボーンスコープイベント
- これは、このビューをこのようにレンダリングする必要があります
- バックボーンは、その要素を委任に使用します
2番目の問題:
- イベントを使用して視界を破壊します
- モデルにビューを保存しないでください。これはMVCの「いいえ」のようなものです。モデルは、削除されたときにすでに「削除」イベントを発しています。あなたの見解はそれを聞いて、それに応じて振る舞うべきです。
- あなたはあなた自身のdomからあなたのビュー要素を削除する必要があります
- これはバックボーンによって処理されません。
その他の一般的なコメント:
- ビューはすでにバックボーンを拡張しています。イベント
- this.addressの代わりにthis.modelを使用します
所属していません StackOverflow