Sto tentando di utilizzare Backbone con un'API.Ignora la funzione di analisi del backbone
Il formato della risposta API di default è:
{
somemetadatas:xxx ,
results:yyy
}
Che si tratti di un'operazione di recupero per un singolo modello o una collezione.
Quindi, per quanto so di poter ignorare la funzione Backbone parse
con:
parse: function (response) {
return response.results;
},
Ma ho visto in the documentation:
parse
collection.parse(response)
parse viene chiamato da Backbone ogni volta ac i modelli di ollection vengono restituiti dal server, in fetch. La funzione passa l'oggetto
response
non elaborato e deve restituire l'array degli attributi del modello da aggiungere alla raccolta. L'implementazione di default è un no-op, passa semplicemente attraverso la risposta JSON. Sovrascrivi questo se hai bisogno di lavorare con un'API preesistente, o meglio lo spazio dei nomi le tue risposte. Nota che in seguito, se la tua classe modello ha già una funzioneparse
, verrà eseguita su ogni modello scaricato .
Quindi, se ho una risposta per una collezione recuperare così:
{
somemetadatas:xxx ,
results:[user1,user2]
}
La prima funzione parse
sulla raccolta estrarrà [user1,user2]
.
Ma il dottore dice:
Nota che poi, se la classe del modello ha già una funzione
parse
, verrà eseguito uno contro l'andò a prendere modello.
Così sarà cercare di trovare response.results;
su user1
e user2
ho bisogno di entrambe le funzioni di parsing sul modello e la raccolta perché entrambi i modelli e di raccolta dati saranno sotto l'attributo risultato.
Ma se prendo una raccolta, non voglio che la funzione di analisi del modello sia utilizzata per un singolo elemento di matrice.
Quindi c'è una soluzione a questo problema?
penso a una soluzione in cui la mia funzione di parsing collezione trasformerà qualcosa di simile:
{
somemetadatas:xxx ,
results:[user1,user2]
}
in qualcosa di simile a questo:
[ {results.user1} , {results.user2} ]
modo che la funzione del modello di analisi non mancherà su un raccolta Ma è un po 'hacky ... c'è qualche soluzione elegante a questo problema?
Tra l'altro, come il mio API produrrà sempre risultati di questa forma, è possibile eseguire l'override di default la funzione parse
di tutti i miei modelli e collezioni? (Scusate, sono un JOB noob ...)
grazie cercheranno che –
mia abitudine 'parse' si chiama, ma non ha alcun effetto - i valori nel modello sono solo l'ID iniziale, che è stato fornito nel costruttore ... Qualsiasi idee? – Dor
Se stai provando a fare cose sui tuoi id modello, non puoi farlo dalla versione 1.1.0. http://backbonejs.org/#changelog Se non è così, dovrai pubblicare una domanda. – nikoshr