在你首先编写的新 ember 应用程序中:
var App = Ember.Application.create({
test: 'foo',
...
});
在您首先编写的新 ember-cli 应用程序中:
var App = Ember.Application.extend({
test: 'foo',
...
});
为什么?
(在第二种情况下,我无法从 Controller 读取全局属性 (App.test)。!?)
最佳答案
这个问题其实和Ember.Object
有很大关系。
.extend()
创建一个扩展旧类的新类,在传入的哈希中定义类级属性。
.create()
创建类的新实例,在传入的哈希中定义对象级属性。
这就是为什么在第二种情况下无法读取该属性的原因。如果你想这样做,你需要做:
var App = Ember.Application.extend({});
App.test = 'foo';
在普通的 Ember 应用程序中,您可以创建 App
对象的实例,因为您将直接使用它。
在 ember-cli 生成的 Ember 应用程序中,您不需要创建 App
对象的实例,您只需定义它的类(使用 .extend()
)。这是因为您不直接使用它,因为 ember-cli 需要该类,因此它可以在内部实例化它之前对其执行自己的操作。
关于javascript - 为什么 ember-cli 使用扩展而不是创建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24914677/