2 votes

Comment accéder à une propriété dans un itemController via l'API des besoins dans Ember.js

Comment puis-je accéder aux propriétés d'un itemController lorsque j'accède au contenu d'un contrôleur via l'API des besoins ?

App.PostsIndexController = Ember.ArrayController.extend
  itemController: 'post'
  someAction: -> console.log("i'm melting!")

App.PostController = Ember.ObjectController.extend
  someComputedProperty: (-> true ).property()

App.IndexController = Ember.Controller.extend
  needs: ['postsIndex']

<script type="text/x-handlebars" data-template-name="index">
  {{#each post in controllers.postsIndex.content}}
    {{someComputedProperty}}
    <a {{action someAction target="postsIndex"}}>click</a>
  {{/each}}
</script>

J'ai essayé {{controllers.postsIndex.someComputedProperty}} y {{someComputedProperty}} dans le index modèle.

5voto

Mike Grassotti Points 15937

Comment puis-je accéder aux propriétés d'un itemController lorsque j'accède au contenu d'un contrôleur via l'API des besoins ?

Tout d'abord, vous devez passer le controllers.postsIndex à la {{each}} au lieu de l'aide controllers.postsIndex.content . Sinon, le {{each}} bouclera sur les objets de votre modèle sans passer par l'assistant PostsIndexController . Donc comme @MilkyWayJoe l'a suggéré, essayez quelque chose comme :

<script type="text/x-handlebars" data-template-name="index">
  {{#each post in controllers.postsIndex}}
    {{someComputedProperty}}
    <a {{action someAction target="postsIndex"}}>click</a>
  {{/each}}
</script>

J'ai essayé, mais il semble que someComputedProperty ne soit pas mis à jour lorsqu'il change, bien qu'il calcule correctement au chargement de la page.

Les propriétés calculées par Ember ne sont pas mises à jour, sauf si vous spécifiez une liste de dépendances :

App.PostController = Ember.ObjectController.extend
  someComputedProperty: (-> true ).property('title', 'someotherproperty', 'etc')

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