Pourquoi ai-je besoin de “reopenClass” pour définir l'url d'une braise-modèle de données?

StackOverflow https://stackoverflow.com//questions/12679998

  •  12-12-2019
  •  | 
  •  

Question

J'ai trouvé que si j'essaie d'inclure l'url dans la définition originale d'une braise-modèle de données, il souffle dans mon REPOS adaptateur, mais si j'ai simplement "reopenClass" c'est très bien.

Qu'est-ce que la technique la raison derrière tout cela?(ci-dessous, l'exemple de travail)

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

CodeCamp.Speaker.reopenClass({
    url: 'sessions/%@/speakers'
});
Était-ce utile?

La solution

L'appel extend sur un objet fixe instance attributs, tandis que reopenClass définit les attributs de classe.

L' url l'attribut est un niveau de classe de l'attribut,

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

par opposition à:

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

Autres conseils

Notez également que vous pouvez étendre une instance en utilisant simplement reopen.Emberjs' docu contient un exemple que vous trouverez sur le http://emberjs.com/guides/object-model/reopening-classes-and-instances/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top