2014-01-17 3 views
0

저는 백본에 처음 접했고 질문이 있습니다. 내 견해에있는 사건이 해고 될 때, 나는 "이"에 대한 맥락을 잃어버린 것처럼 보입니다. 모델을 유지하거나 원래 "this"를 얻으려면 어떻게해야합니까? 예를 들면 다음과 같습니다.backbone.js이 컨텍스트는 이벤트 함수에서 손실됩니다.

var MyListView = MyDBView.extend({ 
    initialize: function(options){ 

    }, 
    render: function() { 
     //stuff here. I can access this.options here 

    }, 
    dialogResponseYes: function(e){ 
     //try to get this.options and options is undefined as this has changed to another element (a button) 
    } 

}); 

그럼 어떻게 원래의 컨텍스트를 얻을 수 있습니까?

+0

을 사용하여보기로 바인드 할 수 없습니다, 이벤트 http://backbonejs.org/#View-delegateEvents 모든 확인을해야 여기처럼보기에 이벤트를 바인딩 개체를 사용하는 경우 어떤 'this'을 지적하길 원하니? 보기? – MMM

+0

예. 또한 모든 기능에 액세스 할 수있는 MyListView 클래스의 공용 속성을 선언하고 싶습니다. 하지만 이렇게하려면 모든 메서드와 함수에 대해 "this"를 동일한 컨텍스트로 유지해야합니다. – jason

+1

[BackboneJS 뷰 내에 컨텍스트 유지] 가능한 복제본 (http://stackoverflow.com/questions/13233979/keep-context) -within-backbonejs-view) – nikoshr

답변

2

당신이 그렇지 않으면 u는 거의 _.bindAll

initialize: function(options){ 
_.bindAll(this, "dialogResponseYes"); 
    }, 

또는

var MyListView = MyDBView.extend({ 
    initialize: function(options){ 

    }, 
    events: { 
     'click div': 'dialogResponseYes' //example 
    }, 
    render: function() { 


    }, 
    dialogResponseYes: function(e){ 

    } 

}); 
+0

첫 번째 옵션을 수행하고 그 작업을 수행했습니다! 감사 – jason