2013-03-11 3 views
0

Je n'arrive pas à cibler un contrôleur enfant à partir du contrôleur parent.Besoins du contrôleur Ember.js et contrôleur enfant

Ayant ceci:

<script type="text/x-handlebars" data-template-name="parent"> 
    <h1>Parent controller</h1> 
    {{control "child"}} 
</script> 

<script type="text/x-handlebars" data-template-name="child"> 
    <h2>Child controller</h2> 
    {{controller}} 
</script> 

App.ParentController = Ember.Controller.extend({ 
    needs: ["child"], 
    applyActionOnChild:function(){ 
     this.get('controllers.child').someAction(); 
    } 
}); 
App.ParentView = Ember.View.extend({}); 

App.ChildController = Ember.Controller.extend({ 
    someAction:function(){ 
     //Called but not the right instance 
    }; 
}); 
App.ChildView = Ember.View.extend({}); 

Les besoins caractéristique de Ember semble fonctionner lorsqu'un contrôleur de l'enfant appelle le contrôleur parent mais pas l'inverse ...

Si je place un point d'arrêt dans la méthode someAction, je peux voir que j'ai une référence d'objet différente de celle affichée sur la vue enfant ...

Quelqu'un sait comment cela pourrait fonctionner?

Merci à l'avance

Répondre

1

Dans votre exemple, vous spécifiez {{controller "child"}}, avez-vous dire {{control "child"}}? Si ce n'est pas difficile de dire ce que vous essayez de faire.

La fonction de besoins consiste à câbler ensemble des singletons de contrôleur, mais l'assistant de contrôle rend le modèle dans le contexte d'une nouvelle paire contrôleur/vue. Vous ne pouvez pas utiliser les besoins pour accéder à ces contrôleurs, car il n'y aurait aucun moyen pour les besoins de savoir quelle instance vous voulez dire.

Semble à la place que vous voulez rendre le modèle "enfant" dans le contexte de l'unique singleton childController. Dans ce cas, utilisez l'assistant de rendu: {{render "child"}}

+1

Il a fait l'affaire merci! Dommage que ce ne soit pas bien documenté ... – Fiftoine

+0

Cool, content que ça aide. FWIW l'assistant '{{control}}' est encore expérimental, s'il est lancé dans le public, les documents officiels de l'API suivront. Pendant ce temps @darthdeus a un bon article sur les différents assistants ici: http://darthdeus.github.com/blog/2013/02/10/render-control-partial-view/ –

Questions connexes