为什么我需要“reopenClass”来设置ember-data模型的url?

时间:2012-10-01 19:47:05

标签: ember.js ember-data

我发现如果我尝试将url包含在ember-data模型的原始定义中,它会在我的REST适配器中爆炸,但如果我只是“重新打开”,那就没关系。

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

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 个答案:

答案 0 :(得分:15)

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

url属性是类级属性

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

而不是:

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

答案 1 :(得分:0)

另请注意,您只需使用reopen即可扩展实例。 Emberjs的文档包含您在http://emberjs.com/guides/object-model/reopening-classes-and-instances/

找到的示例