2012-02-13 13 views

risposta

47

Personalmente, per tenerlo come EXT-MVC possibile, ho una classe di utilità piena di metodi statici. Questo può essere richiesto come qualsiasi altra classe per mantenere relazioni di dipendenza appropriate. Ciò garantisce anche che i metodi vengano eseguiti in un ambiente EXT, quindi tutto EXT è disponibile.

Ext.define('MyApp.Utilities', { 
    statics: { 
     foo: function (a, b) { 
      return a + b; 
     } 
    } 
}); 

Ext.define('MyApp.MyView', { 
    extends: 'Ext.panel.Panel', 
    requires: ['MyApp.Utilities'], 

    initComponent: function() { 
     MyApp.Utilities.foo(1, 2); 
    } 
}); 
+0

Puoi fornire qualche piccolo esempio della tua idea? –

+0

Ho aggiunto del codice alla mia risposta, fammi sapere se è d'aiuto. –

+2

La chiamata 'Utilities.foo' non dovrebbe essere' MyApp.Utilities.foo'? – JohnnyHK

4

Un approccio alternativo diverso dall'approccio statico di @David Kanarek consiste nel definire un singleton. Codici:

Ext.define('MyApp.Utilities2', { 
    singleton: true, 
    global_var2: 'Hello World', 
    foo2: function (a, b) { 
     return a + b; 
    }, 
}); 

Ho creato un violino qui: https://fiddle.sencha.com/#fiddle/qu1

La differenza tra la statica e l'approccio Singleton è che

  • MyApp.Utilities2 (approccio Singleton) è un oggetto,
  • MyApp.Utilities (approccio statico) è una classe.

Quindi sta a te decidere se fare riferimento alla classe stessa o fare riferimento a un'istanza di quella classe per praticità.

Problemi correlati