2011-11-29 4 views
0

버튼을 클릭하면 클래스를 인스턴스화합니다. 버튼 콜백 외부에서이 클래스 인스턴스에 대한 참조를 얻으려면 어떻게해야합니까?Sencha Touch - 클래스 인스턴스에 대한 참조를 얻는 방법

handler: function() { 
    var formValues = Ext.getCmp('DonateItemForm').getValues(), 
     itemDetails = Ext.create('App.model.ItemDetails', formValues); 
} 

편집 : 사용하지 않고

답변

1

당신은에 모델 인스턴스를 저장해야합니다 (핸들러의 외부) 전역 변수를 생성하고 처리기에 할당 글로벌 컨트롤러 (보기)를 관리합니다.

Ext.getCmp('DonateItemForm').itemDetails = itemDetails; 

을하지만 기본 개념은 명확해야한다 : 당신이 Model-View-Controller 패턴에 따라 코딩하지 않는 경우 그러나, 당신은 기부 양식에 첨부 할 수 액세스하려는 모든 시간을 모델 인스턴스를 관리하는 객체 (양식 컨트롤러 또는 양식 자체)를 거쳐야합니다.

[편집]

컨트롤러에서 먼저 해당 컨트롤러로 전송해야 할 데이터를 저장하려면 : 기본적으로

를, 그에게 메시지를 발송하여 컨트롤러에 데이터를 전송해야 핸들러 . 메시지에는 보내려는 양식 데이터가 들어있는 페이로드가 포함됩니다.

handler: function() { 
    var formValues = Ext.getCmp('DonateItemForm').getValues(); 
    var itemDetails = Ext.create('App.model.ItemDetails', formValues); 

    Ext.dispatch({ 
     controller: "YourController", 
     action: 'MethodOnYourController', 
     yourDetails: itemDetails 
    }); 
} 

"yourDetails"는 필요한 항목을 보관합니다. 물론 원하는 이름을 붙일 수 있으며 원하는 경우 파견 된 메시지에 더 많은 회원을 추가 할 수 있습니다.

이제 당신은이 이벤트를 잡을 수 있습니다 "MethodOnYourController"라는 방법을 확인해야합니다 :이 코드를 테스트하지 않았습니다

YourController = Ext.extend(Ext.Controller, { 
    MethodOnYourController: function(options) 
    { 
     this.itemDetails = options.yourDetails; // get the "yourDetails" that you added and store it in this controller 
    } 
}); 

,하지만 아이디어는 꽤 명확해야한다.

+0

답장을 보내 주셔서 감사합니다. MVC 패턴을 사용하고 있습니다 - 컨트롤러에 모델 인스턴스를 저장하는 방법은 무엇입니까? 정확히 내가 원하는대로 들리는 군. – Brett

+1

당신을 진심으로 환영합니다! 내 게시물을 수정했습니다. 내 대답은 "\ [편집 \]"표시가 지난 콘텐츠를 참조하십시오. –

+0

정말 고마워요. 완벽하게 이해합니다. 나는 성공을 거두지 않고 이것을 온라인으로하는 방법을 찾으려고 노력했다. 이 접근법을 어디에서 얻을 수 있는지 말해 줄 수 있습니까? 저는 현재 시애틀의 Sencha Workshop에 있습니다. – Brett

0
var itemDetails; 

//... 
handler: function() { 
    var formValues = Ext.getCmp('DonateItemForm').getValues(); 
    itemDetails = Ext.create('App.model.ItemDetails', formValues); 
} 
//... 

그냥

+0

전 세계를 사용할 필요가없는 Sencha 방식을 기대했습니다. Ext.getModel ('MyItems')과 같은 것이고 Ext.create()에 'MyItems'를 전달합니다. – Brett

관련 문제