Por que preciso “reopenClass” para definir a URL de um modelo de dados ember?

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

  •  12-12-2019
  •  | 
  •  

Pergunta

Descobri que se eu tentar incluir o URL na definição original de um modelo de dados ember, ele explodirá no meu adaptador REST, mas se eu simplesmente "reabrirClass", tudo bem.

Qual é a razão técnica por trás disso?(abaixo está o exemplo de trabalho)

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

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

Solução

Chamando extend em um objeto define atributos de instância, enquanto reopenClass define atributos de classe.

O url atributo é um atributo de nível de classe,

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

em oposição a:

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

Outras dicas

Observe também que você pode estender uma instância usando simplesmente reopen.O documento do Emberjs contém um exemplo que você encontra em http://emberjs.com/guides/object-model/reopening-classes-and-instances/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top