2013-05-29 2 views
0

나는 Sencha에서 싱글 톤에 익숙해 지려고 노력하고 있지만, getter는 매번 정의되지 않은 것을 돌려 보낸다 ... 왜? 내 알림에는 'Bob'이 표시되어야하지만 정의되지 않은 값을 반환합니다.싱글 톤 - 정의되지 않습니까?

여기 여기 내 싱글

Ext.define('Prototype.model.Profile', { 
extend: 'Ext.data.Model', 

singleton: true, 

config: { 
    fields: [ 
     { 
      name: 'listEvent', 
      type: 'auto' 
     }, 
     { 
      name: 'listBusiness', 
      type: 'auto' 
     }, 
     { 
      name: 'listTravel', 
      type: 'auto' 
     }, 
     { 
      defaultValue: { 
       username: 'bob' 
      }, 
      name: 'username' 
     } 
    ] 
}, 

addTravel: function(newTravel) { 

    this._listTravel.push(newTravel); 
}, 

getTravel: function(travelTitle) { 

    var travel; 

    for(var i=0; i<this._listTravel().getLength(); i++) 
    { 
     if(this._listTravel[i].getTitle()==travelTitle) 
     { 
      travel=this._listTravel[i]; 
      break; 
     } 
    } 


} 

}); 

답변

1

먼저, 그에 대한 설정 부분이 있어야한다고 생각 :

config: { 
    fields: [ 
     { 
      name: 'listEvent', 
      type: 'auto' 
     }, 
     { 
      name: 'listBusiness', 
      type: 'auto' 
     }, 
     { 
      name: 'listTravel', 
      type: 'auto' 
     }, 
     { 
      defaultValue: 'bob', // Instead of extra 'username' here 
      name: 'username' 
     } 
    ] 
}, 

는 그러나, 나는 싱글이 (모델 클래스) 그런 식으로 사용하기위한 것입니다 생각하지 않습니다. 싱글 톤은 항상 클래스에 단일 인스턴스 만 생성하므로 Model 객체는 대개 독립적이어야합니다.

내 의견으로는, utilton 클래스에만 싱글 톤을 사용해야합니다. 어떤 맥락에서든 당신이 부르기를 원하는 것. 이처럼 :

Ext.define('myApp.utils.AppConfig', { 
    singleton: true, 
    // Default value declared like this, without the config object 
    defaultValue: 'something', 
    alternateClassName: 'AppConfig', 
    log: function(text) { 
     if (typeof console !== 'undefined') { 
      console.log(text); 
     } 
    } 
}); 

그럼 난 더 이상이 프로젝트에서 작동하지 않기 때문에 제가 답변을 확인할 수 없습니다 당신의 컨트롤러/뷰

AppConfig.log('Oh yes ' + AppConfig.defaultValue); // print 'Oh yes something' 
+0

에서 다음과 같이 호출. 죄송합니다 : S APP가 모든 탭에서 사용자의 프로필을 "렌더링"했으므로 의도 한 동작이 모든 곳에서 액세스 할 수있는 형태 였으므로 어디에서나 "프로필"을 이동시켜야하는 대신 직접 싱글 톤으로 만들었습니다 그것을 액세스하고 함수 호출의 길이를 줄이십시오. – Fawar

0

게터와 세터가 잘 작동 나의 핸들러

handler: function(button, event) { 
     var user = Prototype.model.Profile; 
     alert(user._username);} 

입니다. 제대로 작동하지 않는 기본값입니다. 누군가가 알면 왜 대답을 받아 들일지 설명 할 수 없습니다.