2013-08-17 1 views
1

내 백본보기입니다. 하지만 계속해서 다음과 같은 오류가 발생합니다 :백본보기 - 여러 기능을 통해 'this'를 어떻게 전달할 수 있습니까?

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

내 컬렉션에 새 모델을 추가 할 수 있도록하려면 어떻게해야합니까? (콜백) this 당신의 익명 함수의 범위에서

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) 

    }); 
}, 
+2

이 (SO에 그리고 아마도 몇 가지 다른 질문) http://stackoverflow.com/questions/337878/var-self-this를 참조하십시오 – tsiki

답변

2

은 그 기능에 의해 생성 된 뷰 그러나 프로토 타입 (클래스)를하지 나타냅니다.

특정 기능을 사용하려면 해당 기능을 사용해야합니다. this.

당신은 사용할 수 있습니다 밑줄/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)); 
관련 문제