javascript - 为什么 ember-cli 使用扩展而不是创建?

标签 javascript ember.js ember-cli

在你首先编写的新 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/

相关文章:

javascript - 切换到深色模式 HTML 时添加动画

javascript - Ember 3 计算属性 getter setter

javascript - Ember 从组件发送数据到路由并刷新它

javascript - Ember-CLI 与 Laravel 或其他后端框架一起使用

javascript - 如何使用 Ember ArrayController 获取对象集合?

javascript - jquery防止元素重复

javascript - 我可以取消附加到父 div 的子 div 的所有 jquery 事件吗?

javascript - 在html中打印js文件的动态值

ember.js - Ember : Automatically destroy uncommited new model instance when navigating away from route

ember.js - 在 ember-cli 中测试扩展核心 ember 对象