1

これは私のバックボーン ビューからのものです。しかし、次のエラーが発生し続けます。

Uncaught TypeError: Cannot call method 'add' of undefined.

コレクションに新しいモデルを追加できるようにするにはどうすればよいですか?

addGroupModal: function() {
  $('#add-group-modal').modal('show');
  // Manual Event Listener for Submit Button
  $("#add-group-submit-button").click(function(){

      var newGroup = new KAC.Models.KeepAContactGroup({ name: '123', list_order: '2' });
      console.log(newGroup)
      newGroup.save();
      this.collection.add(newGroup)

  });
},
4

1 に答える 1

2

匿名関数 (コールバック) のスコープではthis、ビューではなく、その関数によって作成されたプロトタイプ (クラス) を表します。

その関数が特定thisのコンテキストを使用するように強制する必要があります。

Underscore/LoDash_.bind()メソッド
またはネイティブのFunction.prototype.bind()のいずれかを使用できます(すべての主要なブラウザーと IE > 8 の場合)。

addGroupModal: function() {
  $('#add-group-modal').modal('show');
  // Manual Event Listener for Submit Button
  $("#add-group-submit-button").click(_.bind(function() {

      var newGroup = new KAC.Models.KeepAContactGroup({
          name: '123',
          list_order: '2'
      });
      console.log(newGroup);
      newGroup.save();
      this.collection.add(newGroup);

  }, this));
}

ネイティブ バインド:

$("#add-group-submit-button").click(function() {
    // ...
}.bind(this));
于 2013-08-17T22:29:55.393 に答える