Sencha touch 2 单例-未定义?
我试图熟悉sencha中的singleton,但我的getter每次都返回未定义的结果。。。为什么?我的警报应显示“Bob”,但它返回未定义 这是我的经纪人Sencha touch 2 单例-未定义?,sencha-touch-2,sencha-architect,Sencha Touch 2,Sencha Architect,我试图熟悉sencha中的singleton,但我的getter每次都返回未定义的结果。。。为什么?我的警报应显示“Bob”,但它返回未定义 这是我的经纪人 handler: function(button, event) { var user = Prototype.model.Profile; alert(user._username);} 这是我的单身汉 Ext.define('Prototype.model.Profile', { extend: 'Ex
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;
}
}
}
});
Ext.define('Prototype.model.Profile'{
扩展:“Ext.data.Model”,
辛格尔顿:没错,
配置:{
字段:[
{
名称:“listEvent”,
键入:“自动”
},
{
名称:'listBusiness',
键入:“自动”
},
{
名称:'listTravel',
键入:“自动”
},
{
默认值:{
用户名:“鲍勃”
},
名称:“用户名”
}
]
},
addTravel:功能(newTravel){
此._listTravel.push(newTravel);
},
getTravel:函数(travelTitle){
var旅行;
对于(var i=0;i来说,getter和setter工作正常。这是默认值,不能正常工作。
无法解释为什么如果有人知道,我会接受他们的答案。首先,我认为配置部分应该是:
config:{
字段:[
{
名称:“listEvent”,
键入:“自动”
},
{
名称:'listBusiness',
键入:“自动”
},
{
名称:'listTravel',
键入:“自动”
},
{
defaultValue:'bob',//而不是此处的额外'username'
名称:“用户名”
}
]
},
但是,我不认为单例可以这样使用(在模型类中),因为单例总是只为类创建一个实例,而模型对象通常应该是独立的
在我看来,对于util类,您应该只使用singleton。您希望在任何上下文中调用的东西。如下所示:
Ext.define('myApp.utils.AppConfig'{
辛格尔顿:没错,
//默认值声明如下,不带config对象
defaultValue:'某物',
alternateClassName:'AppConfig',
日志:函数(文本){
if(控制台类型!==“未定义”){
console.log(文本);
}
}
});
然后在控制器/视图中这样调用它
AppConfig.log('Oh yes'+AppConfig.defaultValue);//打印'Oh yes something'
我无法验证您的答案,因为我不再参与此项目。抱歉:S预期的行为是从任何地方都可以访问,因为应用程序在每个选项卡中“呈现”用户的配置文件,因此不必移动“配置文件”无论在哪里,我都将它作为一个单例来直接访问它,并减少函数调用的长度。