ember.js coffeescript

ember.js - Ember: ¿cómo accedes al modelo desde el enrutador?



coffeescript (5)

Con Ember 3.0.0 esta es una forma documentada que funciona para mí:

const model = this.controller.model;

De acuerdo con lo que he leído (corríjanme si me equivoco), la lógica que maneja cuándo se debe guardar un modelo y dónde hacer la transición siguiente debe estar en el enrutador.

Si ese es el caso, me encuentro con un pequeño problema: no sé cómo acceder al modelo desde la ruta .

Este es mi controlador (y los registros de la consola "CREADOS" después de presionar enviar):

App.ScoutsNewController = Ember.ObjectController.extend submit: -> model = @get(''model'') model.on ''didCreate'', -> console.log ''CREATED'' # I want to redirect to the index after creation model.save()

Debería mover esa lógica a la ruta, ¿verdad? Probemos eso:

App.ScoutsNewRoute = Ember.Route.extend model: -> App.Scout.createRecord() events: submit: -> # Based on what I''ve read, the right place to put the code you see in the controller is here. How do I get access to the model? # I have tried @get(''model''), @get(''content'')

Nota: Entiendo que el evento de envío brota desde la vista, al controlador y finalmente a la ruta, deteniéndose en cualquiera de ellos que tenga definido "enviar". Entonces, como quiero que la ruta lo maneje, eliminé el controlador. Puedo ver cualquier console.log hecho en la ruta, solo necesito poder acceder a la instancia del modelo.

Estoy usando Ember v1.0.0-rc.5-7-g610589a

¡Gracias!


Dos opciones: this.currentModel o this.modelFor(routeName)

Actualizar

Hablé con el Señor Alex Matchneer sobre esto. No hay planes para que this.currentModel desaparezca pronto, pero considera this.modelFor(this.routeName) la API pública.


También podría usar this.controller.get(''model''); pero hay planes para eliminar el controlador.

Hasta que podamos usar el código anterior para recuperar las rutas del modelo actual


lo que debería funcionar es

this.controllerFor(''ScoutsNew'').get(''content'')


this.currentModel no es realmente el camino aprobado como se describe here

pero en mi versión de Ember (1.11) this.modelFor(this.routeName) devuelve nulo, así que esto es lo que funcionó para mí

this.controllerFor(this.routeName).get(''model'')