为什么需要使用“reopenClass”来为Ember-data模型设置url?

7

我发现如果我尝试在ember-data模型的原始定义中包含url,它会在我的REST适配器中出现问题,但如果我只是使用“reopenClass”,那就没问题了。

这背后的技术原因是什么?(下面是工作示例)

CodeCamp.Speaker = DS.Model.extend({
    id: DS.attr('number'),
    name: DS.attr('string'),
    session: DS.belongsTo('CodeCamp.Session')
});

CodeCamp.Speaker.reopenClass({
    url: 'sessions/%@/speakers'
});
2个回答

15

在对象上调用 extend 会设置实例属性,而 reopenClass 则会设置类属性。

url 属性是一个类级别的属性,

Ember.get(CodeCamp.Speaker, 'url')

相反地:

speaker = CodeCamp.Speaker.createObject()
Ember.get(speaker, 'name')

太棒了!正是我在寻找的! - Toran Billups
但是 DS.Model 不是一个对象而是一个类,为什么你说我们在调用一个对象的 extend 方法呢?我有点困惑。 - Aras

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接