2014-07-23 6 views
7

In einer neuen ember App schreiben Sie zuerst:Warum ember-cli verwendet erweitern statt erstellen?

var App = Ember.Application.create({ 
    test: 'foo', 
    ... 
}); 

In einem neuen glut-cli App schreiben Sie zuerst:

var App = Ember.Application.extend({ 
    test: 'foo', 
    ... 
}); 

Warum?

(Im zweiten Fall habe ich eine globale Eigenschaft kann nicht lesen (app.test) von einem Controller.!?)

+0

versuchen, diese n bisschen darüber, wie Ember-cli Import und Export-Module http://iamstef.net/ember-cli/#using-modules und http://iamstef.net/ember-cli/#naming lernen lesen -Konventionen – Grapho

Antwort

6

Diese Frage hat tatsächlich viel mit Ember.Object zu tun.

.extend() schafft eine neue Klasse, die die alte in dem Hash definiert sind, mit Klassenebene Eigenschaften erstreckt, die in übergeben wird.

.create() eine neue Instanz der Klasse erstellen, mit Objektebene in der Hash-definierten Eigenschaften, die in übergeben wird.

dieser Grund sollten Sie nicht die Eigenschaft, im zweiten Fall lesen können. Wenn Sie das tun wollen, müssen Sie tun:

var App = Ember.Application.extend({}); 
App.test = 'foo'; 

In einem einfachen Ember App können Sie ein Exemplar des App Objekt erstellen, weil Sie es gehen direkt zu verwenden.

In einer ember-cli generierten Ember-App erstellen Sie keine Instanz des Objekts App, sondern definieren lediglich seine Klasse (mit .extend()). Das liegt daran, dass Sie sie nicht direkt verwenden, da ember-cli die Klasse möchte, damit sie ihre eigenen Dinge tun kann, bevor sie sie intern instanziiert.

Verwandte Themen