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 回答