Im grundlegenden Leaderboard-Beispiel auf meteor.com gibt es eine Methode namens selected_name.Wenden Sie eine Meteormethode an, die ein einzelnes Objekt in einen Kontext für den Lenker zurückversetzt.
Template.leaderboard.selected_name = function() {
var player = Players.findOne(Session.get("selected_player"));
return player && player.name;
};
{{#if selected_name}}
<div class="details">
<div class="name">{{selected_name}}</div>
<input type="button" class="inc" value="Give 5 points" />
</div>
{{/if}}
Stattdessen möchte ich das gesamte Spielerobjekt zurückgeben und dann dieses Objekt als Kontext von Lenker behandelt werden. Ich wünschte, ich könnte das sagen:
Der #if Block oben funktioniert nicht wirklich in Meteor. Die #if-Anweisung bewertet nur die selected_person-Methode, und das verschachtelte {{name}} tut absolut nichts. Ich würde gerne wissen, ob es möglich ist, eine Methode zu schreiben, so dass das zurückgegebene Objekt als Kontext eines #if-Blocks verwendet werden kann.
Die if-Anweisung scheint nicht benötigt zu werden, sieht aus wie die mit eigenen Handles, die, wie ich es erwartet hätte. – jonathanKingston
@jonathanKingston In einem Fall, in dem es keine ausgewählte Person gibt, wird der Rest der divs gerendert, was möglicherweise nicht das ist, wonach Sie suchen. In meinem Anwendungsfall möchte ich das Fragment nur dann rendern, wenn dort ein Wert vorhanden ist. – Benson
Alternativ kombinieren Sie das If und das mit in einem Helfer. ZB: 'Handlebars.registerHelper ('ifwith', Funktion (Kontext, Optionen)) { \t if (Kontext) return options.fn (Kontext); });'. Auf diese Weise wird die selected_person nur einmal aufgerufen, und nicht nur einmal wegen des if und einmal wegen des with. –