2014-07-23 85 views
7

在一個新的餘燼應用程序,你寫第一:爲什麼ember-cli使用extend而不是create?

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

在一個新的餘燼-CLI應用程序,你寫第一:

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 -conventions – Grapho

回答

6

這個問題其實有很多事情要做Ember.Object

.extend()創建延伸舊一類新的,具有類級在被傳遞的哈希定義性質。

.create()創建該類的一個新實例,與對象級在傳入的散列中定義的屬性。

這就是爲什麼您無法讀取第二種情況下的屬性。如果你想做到這一點,你需要做的事:

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

在一個普通的灰燼應用程序,你可以創建App對象的實例,因爲你要直接使用它。

在一個ember-cli生成的Ember應用程序中,您不會創建App對象的實例,您只需定義其類(使用.extend())。這是因爲你不直接使用它,因爲ember-cli想要這個類,所以它可以在它內部實例化它之前做它自己的事情。

相關問題