2014-07-23 20 views
7

W nowej węgielek App piszesz najpierw:Dlaczego ember-cli używa rozszerzenia zamiast tworzyć?

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

W nowej ember-cli App piszesz najpierw:

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

Dlaczego?

(w drugim przypadku, nie mogę odczytać właściwość globalnego (App.test) ze sterownika.!?)

+0

Spróbuj przeczytać, aby dowiedzieć się trochę o tym, jak moduły importu i eksportu ember-cli http://iamstef.net/ember-cli/#using-modules i http://iamstef.net/ember-cli/#naming -konwencje – Grapho

Odpowiedz

6

To pytanie rzeczywiście ma wiele wspólnego z Ember.Object.

.extend() tworzy nową klasę, która rozciąga się starą z klasy poziomu właściwości zdefiniowane w mieszania, która jest przekazywana w.

.create() utworzyć nową instancję klasy z poziomu obiektu właściwości określone w haszowniku, który jest przekazywany.

Dlatego nie można odczytać właściwości w drugim przypadku. Jeśli chcesz to zrobić, trzeba będzie zrobić:

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

W prostym aplikacji Ember, można utworzyć instancję obiektu App, bo masz zamiar używać go bezpośrednio.

W wygenerowanej przez ember-cli aplikacji Ember, nie tworzysz instancji obiektu App, tylko definiujesz jej klasę (używając .extend()). Dzieje się tak dlatego, że nie używasz go bezpośrednio, ponieważ ember-cli chce klasę, aby mogła wykonywać na niej własne rzeczy, zanim wewnętrznie ją stworzy.

Powiązane problemy