Estoy intentando utilizar Backbone con una API.Sobrescribir la función de análisis de la red troncal
El formato de respuesta de la API por defecto es:
{
somemetadatas:xxx ,
results:yyy
}
Ya se trate de una extracción de un solo modelo o una colección.
Así que por lo que yo sé que puedo reemplazar la función Backbone parse
con:
parse: function (response) {
return response.results;
},
Pero he visto en the documentation:
de análisis
collection.parse(response)
de análisis es llamado por Backbone cada vez que ac Los modelos de ollection son devueltos por el servidor, en fetch. La función se pasa el objeto raw
response
y debe devolver la matriz de atributos de modelo para agregar a la colección. La implementación predeterminada de no es operativa, simplemente pasa a través de la respuesta JSON. Anule esto si necesita trabajar con una API preexistente, o mejor namespace sus respuestas. Tenga en cuenta que después, si su clase de modelo ya tiene una funciónparse
, se ejecutará contra cada modelo obtenido.
Así que si tengo una respuesta para una colección busquen como los que:
{
somemetadatas:xxx ,
results:[user1,user2]
}
La primera parse
función en la colección va a extraer [user1,user2]
.
Pero el doctor dice:
Tenga en cuenta que después, si la clase del modelo ya tiene una función
parse
, se fue a buscar correr uno contra modelo.
Por lo tanto, tratará de encontrar response.results;
en user1
y user2
Necesito ambas funciones de análisis sintáctico en el modelo y la recolección debido a que ambos modelos y recogida de datas más estarán bajo el atributo resultado.
Pero si busco en una colección, no quiero que la función de análisis de modelo se use contra un único elemento de matriz.
¿Existe una solución a este problema?
pienso en una solución donde mi función de análisis de recogida va a transformar algo como esto:
{
somemetadatas:xxx ,
results:[user1,user2]
}
en algo como esto:
[ {results.user1} , {results.user2} ]
Para que la función del modelo de análisis no fallará en una obtención de colección. Pero es un poco raro ... ¿hay alguna solución elegante para este problema?
Por cierto, ya que mi API siempre producirá resultados de esta forma, es posible anular de forma predeterminada la función parse
de todos mis modelos y colecciones? (Disculpe que soy un novato JS ...)
gracias intentarán que –
Mi costumbre 'parse' se llama, pero no tiene efecto - los valores en el modelo son sólo el ID inicial que se proporciona en el constructor ... Cualquier ideas? – Dor
Si intenta hacer cosas con sus ID de modelos, no puede hacerlo desde la versión 1.1.0. http://backbonejs.org/#changelog Si no es eso, tendrá que publicar una pregunta. – nikoshr