2014-07-23 2 views
7

응용 프로그램은 먼저 쓰기 : 새 엠버 - CLI 응용 프로그램에서ember-cli가 create 대신 extend를 사용하는 이유는 무엇입니까? 새로운 타다 남은에서

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

처음 쓰기 :

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

이유는 무엇입니까?

이 (두 번째 경우, 나는 컨트롤러에서 전역 속성 (App.test를) 읽을 수 없습니다.!?)

+0

ember-cli가 모듈을 가져오고 내보내는 방법에 대해 알기 위해이 글을 읽으십시오. http://iamstef.net/ember-cli/#using-modules 및 http://iamstef.net/ember-cli/#naming 대회 – Grapho

답변

6

이 질문은 실제로 Ember.Object과는 많이있다.

.extend()

클래스 수준에서 전달되는 해시에 정의 된 속성을 이전 하나를 확장하는 새 클래스를 만듭니다.

.create()를 클래스의 새 인스턴스를 만들, 개체 수준로 전달 된 해시에 정의 된 속성.

두 번째 경우에는 속성을 읽을 수없는 이유가 여기에 있습니다. 당신이하고 싶은 경우에, 당신은해야 할 것입니다 : 당신이 직접 사용하려고하기 때문에 일반 엠버 응용 프로그램에서

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

, 당신의 App 개체의 인스턴스를 만들 수 있습니다.

ember-cli가 생성 한 Ember 응용 프로그램에서 App 개체의 인스턴스를 만들지 않으므로 클래스를 정의하면됩니다 (.extend() 사용). 이것은 ember-cli가 클래스를 원하기 때문에 직접적으로 사용하지 않기 때문입니다. 내부적으로 인스턴스화하기 전에 자체적 인 일을 할 수 있습니다.