Ao carregar entrada detalhada e depois lista de entradas, dados Ember remove campos não definidos na resposta de lista
eu tenho umBook
modelo, com vários atributos, por ex.title
, author
eprices
. prices
é uma grande lista de informações históricas sobre preços.
Quando solicito uma lista de livros da API, excluo aprices
campo para manter a resposta pequena.
Em uma exibição de detalhes do livro, solicito as informações completas do livro (e renderize um gráfico usando d3). Ember-data busca o único livro da API, atualiza o modelo e está tudo bem.
Minha única página do livro é umarecurso aninhado do meu recurso de lista de livros:
App.Router.map ->
@resource 'books', ->
@resource 'book', path: ':book_id'
App.BooksRoute = Ember.Route.extend
model: ->
App.Book.find()
App.BookRoute = Ember.Route.extend
model: (params) ->
Book.find(params.book_id)
Quando eu entro no aplicativo na página de detalhes do livro (/#/books/42
ao invés de/
), Não posso dizer a qual solicitação minha API responde primeiro, o único livro ou a lista de livros. Às vezes, os dados do livro único são processados primeiro e, em seguida, os dados da lista de livros são recebidos e os dados da ember substituem os dados existentes pelo recém-recuperado.
Meu problema é este: oprices
campo, que não está incluído na resposta da lista de livros, será apagado do registro do modelo se a resposta da lista de livros for recebidadepois de a resposta do livro único.
Portanto, minha pergunta: Existe uma maneira de evitar que os dados de ember substituam os campos comundefined
?
Eu realmente não entendo esse comportamento também. Isso é realmente um bug? Vejo que atualizar um valor que a nova resposta da API especifica comonull
faz sentido, mas substituindo valores porundefined
foi bastante surpreendente.
prices
é um atributo do tipo "raw" (personalizado), mas é o mesmo se eu excluir oauthor
campo da resposta da listaSe houver uma alternativa aos dados de ember que resolverem isso, estou disposto a mudar para isso (se não houver outras grandes desvantagens - atualmente não estou usandohasMany
!)