2012-10-06 7 views
10

Tengo un objeto de sesión de nivel superior que puede tener muchos hablantes debajo.¿Los datos de ember realmente son compatibles con las URL anidadas?

mi descanso ish punto final permite que consiga todas las sesiones al igual que

/sesiones/

puedo conseguir todos los altavoces para una sesión dada como así

/sesiones/1/altavoces/

con la versión actual de brasa-datos puedo ver que está tratando de encontrar todos los altavoces con esta url

/altavoces/

Usando el modelo de datos a continuación

CodeCamp.Session = DS.Model.extend({ 
    id: DS.attr('number'), 
    name: DS.attr('string'), 
    speakers: DS.hasMany('CodeCamp.Speaker',{nested: true})               
}); 

CodeCamp.Speaker = DS.Model.extend({ 
    id: DS.attr('number'), 
    name: DS.attr('string'), 
    session: DS.belongsTo('CodeCamp.Session',{nested: true}) 
}); 

añadí el "anidada: true" parte porque quería brasa de datos para construir los necesarios

/sesiones /% @/altavoces/

Pero esto no sucedió -

sé que puedo definir una URL de forma manual

CodeCamp.Speaker.reopenClass({ 
    url: 'sessions/%@/speakers/' 
}); 

Pero al hacerlo tendré que implementar mi propio método "buildURL" en el adaptador REST base para que busque un formato como este y agregue el id padre cuando sea necesario (y prefiero no hacerlo si es posible))

¿Los datos de ember tienen soporte para algo como esto de fábrica o me obligaré a escribir una gran cantidad de código por mi cuenta?

Respuesta

7

{nested: true} aún no es una característica. The pull request is still open.

Override & utilice el adaptador findQuery() para realizar una solicitud GET con dicha URL.

Además, si su servidor es Rieles (y tal vez esto funciona para otros marcos), es posible mantener el solo nivel petición de URL, pasando el ID padre como un parámetro de cadena de consulta:

/speakers?session_id=1 
+0

gracias - Pude usar esto como una solución temporal por ahora (espero ver esto en la versión final de ember.js 1.0 o poco después) –

Cuestiones relacionadas