Podczas ładowania szczegółowego wpisu, a następnie listy wpisów, dane Ember usuwają pola nie ustawione w odpowiedzi na listę
mamBook
model z kilkoma atrybutami, np.title
, author
iprices
. prices
to duża lista historycznych informacji o cenach.
Kiedy żądam listy książek z API, wykluczamprices
pole, aby odpowiedź była mała.
W widoku szczegółów książki żądam kompletnych informacji o książce (i renderuję wykres za pomocą d3). ember-data pobiera pojedynczą książkę z API, aktualizuje model i wszystko jest w porządku.
Pojedyncza strona mojej książki tozagnieżdżony zasób mojego zasobu listy książek:
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)
Po wejściu do aplikacji na stronie szczegółów książki (/#/books/42
zamiast/
), Nie mogę powiedzieć, które żądanie mój interfejs API odpowiada na pierwszą, pojedynczą książkę lub listę książek. Czasami dane pojedynczej książki są przetwarzane jako pierwsze, a następnie dane listy książek przychodzą i dane-ember zastępują istniejące dane nowo pobraną.
Moim problemem jest: Theprices
pole, które nie jest uwzględnione w odpowiedzi na listę książek, zostanie usunięte z rekordu modelu, jeśli odpowiedź na listę książek zostanie odebranapo odpowiedź na jedną książkę.
Dlatego moje pytanie: Czy istnieje sposób na zapobieganie nadpisywaniu pól przez dane emberundefined
?
Tak naprawdę nie rozumiem tego zachowania. Czy to rzeczywiście błąd? Widzę, że aktualizuje wartość, którą określa nowa odpowiedź API jakonull
ma sens, ale zastępuje wartościundefined
było dość zaskakujące.
prices
jest atrybutem typu „raw” (niestandardowy), ale jest taki sam, jeśli wykluczęauthor
pole z odpowiedzi listyJeśli istnieje alternatywa dla danych ember, które rozwiązują ten problem, jestem skłonny przełączyć się na to (jeśli nie ma innych dużych wad - obecnie nawet nie używamhasMany
!)