2012-12-13 21 views
6

Come si creano campi statici in una classe e quindi li si accede dall'esterno di quella classe in Sencha Touch 2?Accesso alle proprietà statiche in Sencha Touch

Per esempio ho creato un semplice Singleton con un unico statica:

Ext.define('App.util.Config', { 
    singleton: true, 
    statics: { 
     url: { 
      USER: 'http://localhost:3436/api/user' 
     } 
    }, 
    config: { }, 
    constructor: function (config) { 
     this.initConfig(config); 
     this.callParent([config]); 
    } 
}); 

non posso accedere al campo UTENTE utilizzando App.util.Config.url.USER ma con App.util.Config .self.url.USER. Guardando un campione sui documenti Sencha, sembra che dovrei essere in grado in grado di accedere al campo nel primo modo:

See Statics Section in this link and how they access the Computer.InstanceCount field

+0

Lavorare bene per me. App.util.Config.url è undefined? Cosa restituisce App.util.Config.self? –

+0

App.util.Config.url \t 'undefined' App.util.Config.self \t' function() { \t ritorno this.constructor.apply (questo, argomenti); \t} ' App.util.Config.self.url.USER \t' "http: // localhost: 3436/api/utente" ' – Nate

+1

Un altro pezzo di informazioni che potrebbero essere rilevanti, non sono' Ext. creare (...) 'questa classe, ma richiedendola in app.js' richiede: [ 'Ext.MessageBox', 'App.data.ConnectionRouter', 'App.util.Config' ], ' – Nate

risposta

6

penso che questo è ciò che si vuole

Ext.define('App.util.Config', { 
    singleton: true, 
    statics: { 
     url: { 
      USER: 'http://localhost:3436/api/user' 
     } 
    }, 
    config: { }, 
    constructor: function (config) { 
     var user=this.self.url.User; 
    } 
}); 
1

I rendersi conto che si tratta di vecchie domande, ma mi sono imbattuto in esso quando cercavo qualcos'altro.

Credo che il problema sia l'uso di singleton:true. Quando viene utilizzato, tutto è statico e non è necessario definire esplicitamente la proprietà come statica.

Il seguente dovrebbe essere l'uso corretto:

Ext.define('App.util.Config', { 
    singleton: true, 
    url: { 
     USER: 'http://localhost:3436/api/user' 
    }, 
    config: { }, 
    constructor: function (config) { 
     this.initConfig(config); 
     this.callParent([config]); 
    } 
});