Braise: comment vous procurez-vous le modèle du routeur?
Basé sur ce que j'ai lu (merci de me corriger si je me trompe), la logique qui gère quand un modèle doit être enregistré, et où la transition suivante doit être dans le routeur.
Si c'est le cas, je suis en cours d'exécution dans un peu d'un problème: je ne sais pas comment accéder au modèle de l'itinéraire.
C'est mon contrôleur (et les journaux de la console "CRÉÉ" après que j'ai appuyé sur le bouton soumettre):
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()
Que je devrais tourner la logique, dans la route, à droite? Essayons:
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')
Remarque: je comprends que l'événement submit bulles à partir de la vue, pour le contrôleur, puis enfin de la route, s'arrêtant à l'un d'eux qui a "soumettre" défini. Donc, depuis que je tiens la route pour le manipuler, j'ai enlevé le contrôleur. Je suis en mesure de voir tout console.log
fait de la route, j'ai juste besoin d'être en mesure d'obtenir à l'instance du modèle.
Je suis en utilisant Ember v1.0.0-rc.5-7-g610589a
Merci!
Vous devez vous connecter pour publier un commentaire.
Deux options:
this.currentModel
outhis.modelFor(routeName)
Mise à jour
J'ai parlé à Señor Alex Matchneer à ce sujet. Il n'y a pas de plans pour
this.currentModel
de s'en aller de sitôt, mais il le considèrethis.modelFor(this.routeName)
l'API publique.this.currentModel
si? Le manque de documentation en plus du fait que c'est uniquement dans un cadre privé de la méthode github.com/emberjs/ember.js/blob/v1.0.0/packages/ember-routing/... me fait penser qu'il n'est pas censé pour moi de l'utiliser. Toujours utiliser ce.modelFor(routeName) à la place?this.currentModel
est parfait, mais moi aussi, je voudrais voir une documentation de référence source sur elle.this.currentModel
de s'en aller de sitôt, mais il le considèrethis.modelFor(this.routeName)
l'API publique.ce qui devrait fonctionner est
this.controllerFor('ScoutsNew').get('model')
model
est un alias pourcontent
. Voir l'API pour ObjectController (emberjs.com/api/classes/...) et pour ArrayController(emberjs.com/api/classes/...)this.currentModel
n'est pas vraiment la panacée, comme décrit icimais dans ma version de Braise (1.11)
this.modelFor(this.routeName)
renvoie la valeur nulle, et c'est ce qui a fonctionné pour moiVous pouvez également utiliser
this.controller.get('model');
mais il y a des plans pour supprimer le contrôleur.Jusqu'à ce que l'on peut utiliser le code ci-dessus pour récupérer les itinéraires modèle actuel
Avec Ember 3.0.0 c'est documenté de manière qui fonctionne pour moi: