Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sencha touch 2 单例-未定义?_Sencha Touch 2_Sencha Architect - Fatal编程技术网

Sencha touch 2 单例-未定义?

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

我试图熟悉sencha中的singleton,但我的getter每次都返回未定义的结果。。。为什么?我的警报应显示“Bob”,但它返回未定义

这是我的经纪人

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预期的行为是从任何地方都可以访问,因为应用程序在每个选项卡中“呈现”用户的配置文件,因此不必移动“配置文件”无论在哪里,我都将它作为一个单例来直接访问它,并减少函数调用的长度。