2 votes

Comment obtenir le modèle d'un contrôleur à partir d'un autre contrôleur dans Ember.js

À l'intérieur d'un contrôleur, je fais actuellement ceci :

controller.transitionTo( 'listing', App.Listings.find(1) );

Cela fonctionne très bien. Ce que j'aimerais savoir, c'est s'il y a un moyen d'accéder au modèle d'un autre contrôleur à partir d'un contrôleur afin de ne pas avoir à faire référence à 'App.', car cela ne semble pas être une pratique recommandée par Ember. Je sais qu'il y a un modelFor() mais il semble seulement fonctionner dans les routes.

2voto

mspisars Points 593

Le modèle est défini comme étant le contenu du contrôleur, donc dans votre contrôleur le modèle est le contenu. (sauf si vous remplacez la méthode controllerFor() dans la route bien sûr).

Ensuite, dans votre contrôleur, vous devez définir un tableau needs, qui répertorie les noms des instances de contrôleur (pas des classes) auxquelles vous voulez que ce contrôleur ait accès.

Donc, pour qu'un CommentsController ait accès à un PostController, vous le définiriez de cette manière, à l'intérieur de la définition de votre CommentsController :

needs: ['post']

Ensuite, ceci est disponible à l'intérieur de ce contrôleur via controllers.post (vous n'avez pas besoin d'utiliser model) si votre contrôleur est une instance de ObjectController ou ArrayController, alors vous n'avez même pas besoin de vous soucier d'accéder à content, le contrôleur le fera pour vous via un proxy.

Notez que la relation entre les commentaires et le poste est déterminée par le routeur (spécifiquement comment vos ressources et routes sont définies).

Aussi, un bon point de départ pour en savoir plus sur needs (en dehors du code source) : http://darthdeus.github.com/blog/2013/01/27/controllers-needs-explained/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X