2014-07-23 23 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想要这个类,所以它可以在它内部实例化它之前做它自己的事情。

相关问题