2013-05-20 13 views

Antwort

13

Ja du kannst!

bieten einfach die mixin während eines reopenClass Aufruf:

// The mixin itself 
FooMixin = Em.Mixin.create({ 
    ... 
}); 

// Mix in at the instance level 
BarClass = Em.Object.extend(FooMixin, { 
    ... 
}); 

// Mix in at the class level 
BarClass.reopenClass(FooMixin, { 
    ... 
}); 

ich auf dieses Problem auch gestolpert, und entdeckte diese im Diskurs Projekt getan.

Hoffe, das hilft!

1

Zuallererst lerne ich immer noch EmberJS. :)

Ich hatte das gleiche Problem: Wie Klassen Klassenmethoden zu einer Klasse hinzufügen.

Mein Verständnis ist, dass Sie es nicht tun mit Mixins (Warnung: Ich könnte falsch sein), aber Sie können es tun, eine einfache Unterklasse verwenden.

Schauen Sie sich diese jsbin. App.Soldier ist eine Unterklasse von App.Person, die Instanz- und Klassenmethoden enthält. Diese sind für App.Soldier verfügbar.

Wenn Sie diese Befehle in der Konsole eingeben:

x = App.Soldier.create(); 
x.hello(); // => "hello world!" 
x.fire(); // => "Laser gun, pew! pew!" 
App.Soldier.identifyYourself(); // => "I'm a humanoid carbon unit" 

Die Nachteile dieses Ansatzes ist, dass jemand frei ein App.Person Objekt instanziiert kann. Darüber hinaus können Sie mehrere Elternklassen nicht ableiten.

Wie auch immer, ich hoffe, das hilft

+0

Danke David. Das ist auch mein Verständnis zu diesem Zeitpunkt. Ich schrieb eine Fabrik, um diese Klassen zu generieren. –