Le contexte de la “ce” dans le Météore de modèle de gestionnaires d'événements (à l'aide de Guidon pour le templating)

Une petite question sur le contexte des gestionnaires d'événements pour les modèles dans Meteor (le Guidon).

  • Dans la section de la Documentation sur les instances de modèle (http://docs.meteor.com/#template_inst) il est mentionné que "Modèle, les objets sont trouvés que la valeur de cette dans le, rendus, et détruit modèle de rappels et comme un argument de gestionnaires d'événements"
  • Dans la section Modèles ( http://docs.meteor.com/#templates ), il est dit "Enfin, vous pouvez utiliser un des événements de la déclaration sur une fonction de modèle pour créer un tableau des gestionnaires d'événements. Le format est documenté à Cartes d'Événement. La cet argument pour le gestionnaire d'événement sera l' contexte de données de l'élément qui a déclenché l'événement."

Bien, ce n'est que partiellement vrai. Nous allons utiliser un exemple tiré de la documentation:

<template name="scores">
  {{#each player}}
    {{> playerScore}}
  {{/each}}
</template>

<template name="playerScore">
  <div>{{name}}: {{score}}
    <span class="givePoints">Give points</span>
  </div>
</template
Template.playerScore.events({
  'click .givePoints': function () {
    Users.update({_id: this._id}, {$inc: {score: 2}});
  });

Ici de la "ce" contexte de la " cliquez sur .givePoints' gestionnaire d'événement est en effet le modèle de l'instance de playerScore. Nous allons modifier le code html:

<template name="scores">
  <span class="click-me">Y U NO click me?<span>
  {{#each player}}
    {{> playerScore}}
  {{/each}}
</template>

<template name="playerScore">
  <div>{{name}}: {{score}}
    <span class="givePoints">Give points</span>
  </div>
</template>

... et ajouter un gestionnaire d'événements pour .cliquez sur-moi sur les scores modèle:

Template.scores.events({
  'click .click-me': function () {
    console.log(this);
  }
});

Maintenant, si vous cliquez sur la durée, qu'obtenez-vous connecté? L'objet de la Fenêtre! Qu'ai-je espérer obtenir? L'objet de modèle! Ou peut-être le contexte de données, mais il est ni. Cependant, à l'intérieur de l'rappels (par exemple, Modèle.les scores.rendus = function(){ ... }) le contexte de la "ce" est toujours le modèle de l'instance.

Je suppose que ma question serait plutôt: est-ce quelque chose à faire avec

  • d'un bug dans le Guidon, Météore, ou quelque part entre les deux?
  • légèrement incomplète de la documentation sur les modèles?
  • moi complètement mauvaise interprétation de la documentation ou de ne pas comprendre quelque chose de fondamental
    de Météore, ou le Guidon?

Merci!

  • C'est une bonne question. J'ai toujours des données accessibles dans les événements à l'aide de function(event,template), et ensuite à travers template.data.
  • Souhaite que je pourrais upvote deux fois
  • vous pouvez marquer la question en tant que favori, comme je l'ai fait 😉
InformationsquelleAutor Konstantin K | 2013-02-28