0

我正在尝试熟悉 sencha 中的单例,但我的吸气剂每次都返回我 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;
        }
    }


}

});
4

2 回答 2

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 类)。因为单例总是只会为你的类创建一个实例,而你的模型对象通常应该是独立的。

在我看来,你应该只对 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'
于 2014-03-25T09:48:09.443 回答
0

getter 和 setter 工作正常。这是无法正常工作的默认值。无法解释为什么如果有人知道,我会接受他们的回答。

于 2013-06-06T18:18:44.180 回答