Por que preciso “reopenClass” para definir a URL de um modelo de dados ember?
-
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'
});
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