2012-10-01 3 views
7

Ich habe festgestellt, dass wenn ich versuche, die URL in die ursprüngliche Definition eines Glut-Datenmodells aufzunehmen, es in meinem REST-Adapter explodiert, aber wenn ich einfach "reopenClass", ist es in Ordnung.Warum muss ich "reopenClass" aufrufen, um die URL für ein Glutendatenmodell festzulegen?

Was ist der technische Grund dafür? (Unten ist das Arbeitsbeispiel)

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

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

Antwort

15

extend Aufruf auf einem Objekt setzt Instanzattribute, während reopenClass Sätze Klassenattribute.

Das url Attribut ist ein Klasse-Level-Attribut,

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

im Gegensatz zu:

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

finden können. genau das was ich gesucht habe! –

+0

aber ist 'DS.Model' keine Klasse und kein Objekt? Warum sagst du dann, dass wir ein Objekt aufrufen? Ich bin etwas verwirrt. – Aras

Verwandte Themen