为什么ember-cli使用extend而不是create
Why ember-cli uses extend instead of create?
在一个新的ember App中你先写:
var App = Ember.Application.create({
test: 'foo',
...
});
在一个新的ember-cli应用中,你先写:
var App = Ember.Application.extend({
test: 'foo',
...
});
为什么?
(在第二种情况下,我不能从控制器读取全局属性(App.test)。! ?)
这个问题其实和Ember.Object
有很大关系。
.extend()
创建一个扩展旧类的新类,并在传入的散列中定义类级别属性。
.create()
创建一个类的新实例,并在传入的散列中定义对象级属性。
这就是为什么在第二种情况下你不能读取属性。如果你想这样做,你需要这样做:
var App = Ember.Application.extend({});
App.test = 'foo';
在普通的Ember应用程序中,您可以创建App
对象的实例,因为您将直接使用它。
在Ember -cli生成的Ember应用程序中,您不需要创建App
对象的实例,只需定义它的类(使用.extend()
)。这是因为你没有直接使用它,因为ember-cli想要这个类,所以它可以在内部实例化它之前对它做自己的事情。
相关文章:
- 如何覆盖主干中的extend方法
- AngularJS Navigation (li ng-repeat, create header li), DOM
- 使用Object.create()的角度服务继承
- 如何在使用Ractive.extend()时引用DOM元素
- 在使用object.create创建的对象中使用super
- chrome.tabs.create的回调不会在弹出窗口中触发
- 使用带有自定义对象作为属性的jQuery.extend时出现意外行为
- Backbone - Collection.add() / Collection.create() 之间的区别
- 如何在ajax重定向中传递create-formbuilder
- ColdFusion.Window.create不刷新弹出窗口
- 禁用facebook在like按钮启动edge.create事件
- 正在使用object.create()创建XMLHttpRequest对象
- Stripe API:没有ID为X的令牌(Stripe.cocharges.create)
- Object.create()只读名称属性
- Class.create()上的Comatose(rails插件)javascript错误
- jQuery extend 函数是怎么回事
- childObj.prototype = Object.create(parentObj.prototype) 和 ch
- 找不到在 create-js 中运行的动画,未列出任何错误
- Rails:如何在jQuery(.js.erb)中调用“create”操作
- 为什么ember-cli使用extend而不是create