質問

私はそのように見えるビューと関連するモデルをいじり回しています:

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を使用します
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top