2013-05-29 217 views
0

我試圖熟悉sencha中的singleton,但是我的getter每次都會返回UNDEFINED ...爲什麼?我的警報應該顯示'鮑勃',但它返回未定義。單身人士 - 未定義?

這裏是我的處理程序

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

這是我的單身

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類)。因爲singleton將始終只爲您的類創建單個實例,而Model對象通常應該是獨立的。

在我看來,你應該只使用singleton for util類。你想在任何情況下調用的東西。就像這樣:

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

getter和setter做工精細。這是默認值,它不能正常工作。 無法解釋爲什麼如果有人會知道,我會接受他們的答案。