在您首先编写的新ember应用程序中:
var App = Ember.Application.create({
test: 'foo',
...
});
在您首先编写的新ember-cli应用程序中:
var App = Ember.Application.extend({
test: 'foo',
...
});
为什么?
(在第二种情况下,我无法从控制器读取全局属性(App.test)。!)
答案 0 :(得分:6)
这个问题实际上与Ember.Object
有很大关系。
.extend()
创建一个扩展旧类的新类,在传入的哈希中定义类级属性。
.create()
创建一个新的类实例,并在传入的哈希中定义对象级属性。
这就是为什么你不能在第二种情况下阅读该属性。如果你想这样做,你需要做:
var App = Ember.Application.extend({});
App.test = 'foo';
在简单的Ember应用程序中,您可以创建App
对象的实例,因为您将直接使用它。
在ember-cli生成的Ember应用程序中,您不创建App
对象的实例,只需定义其类(使用.extend()
)。这是因为你没有直接使用它,因为ember-cli想要这个类,所以它可以在它内部实例化之前对它做自己的事情。