Gibt es eine Möglichkeit, Variablen in Vorlagen in Meteor zu übergeben?
Ich habe experimentiert mit Meteor und lief in etwas, das ich konnte nicht herausfinden,. Für Spaß, ich habe versucht zu machen, ist ein Spielautomat. Ich hatte den folgenden HTML-Code:
<div class="slot-wrapper">
{{> slot}}
{{> slot}}
{{> slot}}
</div>
<template name="slot">
<div class="slot">
<div class="number"><span>{{ number }}</span></div>
<div class="divider"></div>
</div>
</template>
Ich möchte eine andere Zahl für jeden slot. Ist es möglich, die übergabe von Variablen in die Vorlage? So etwas wie dieses:
<div class="slot-wrapper">
{{> slot 1}}
{{> slot 2}}
{{> slot 3}}
</div>
<template name="slot">
<div class="slot">
<div class="number"><span>{{ number i}}</span></div>
<div class="divider"></div>
</div>
</template>
Vielleicht bin ich über dieses denken in die falsche Richtung und es gibt einen besseren Weg.
Kommentar zu dem Problem
Meteor hat sich geändert und eingeführt, die Spacebars. für details Siehe hier: discovermeteor.com/blog/... und Dascalescu Antwort: stackoverflow.com/a/25090098/220060
InformationsquelleAutor der Frage Jordan Brown | 2012-04-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Alle vorherigen Antworten sind viel zu Komplex oder veraltet sind. Hier ist, wie können Sie statische Parameter in Vorlagen, die direkt aus HTML+Spacebars code, als der Meteor 0.8.x:
Alles, was Sie tun müssen, ist, übergeben
key="value"
Parameter in der{{> template}}
Inklusion nennen:Erfahren Sie mehr auf Spacebars Geheimnisse: Die Erkundung Meteor Vorlagen.
Möchten Sie die Weiterleitung der Anrufer-Vorlage die Daten des Kindes/verschachtelt/template, hier ist, wie es zu tun: pass nichts. Stattdessen wird aus der verschachtelten Vorlage, den Zugriff auf die parent-Daten, Zusammenhang
../
:InformationsquelleAutor der Antwort Dan Dascalescu
Stellt sich heraus, es gibt einen anderen Weg.
Ich habe versucht, herauszufinden, wie dies zu tun ist durch googeln verschiedene Recherchen und fand diese Frage aber nichts, das geeignet ist mein Ziel. TomUnite Antwort funktioniert, es sei denn, Sie möchten die verschachtelte Vorlagen in verschiedenen Orten in der übergeordneten Vorlage.
Also nach viel suchen fand ich 'eine' Antwort in der meteor-Basis zu nutzen. (Nicht sagen, es ist die endgültige Antwort, aber es funktioniert)
Wie Sie sehen, können wir angeben der template-Instanzen in beliebiger Reihenfolge. Der zweite parameter ist eigentlich eine variable, die definiert werden sollte, so:
Könnte dies gemacht werden in knapper code mit einer Schleife oder vielleicht mit underscore.js die Funktion _.erstrecken sich über die Schlitze Objekt. Auch können Wir passieren mehrere Felder von Daten in diese Objekte.
InformationsquelleAutor der Antwort Joc
Ich wollte das als Kommentar, weil es einfach eine Klarstellung, Joc Antwort, konnte Sie aber nicht, so ist es hier mit plus das Beispiel, mit dem ich arbeitete.
Nur EIN argument übergeben werden kann, um die Vorlage :
diesem argument muss ein Objekt sein, wie z.B. :
die argument-Werte zugegriffen werden kann, über Ihre Schlüssel, und der Bereich kann ausgeschaltet werden, um die Unterpunkte mit den
{{#with numberComposite}}
Hier ist der vollständige code für das Beispiel :
<html-Datei>
<javascript-Datei>
AUSGABE:
InformationsquelleAutor der Antwort jay
Bessere Antwort:
Die beiden Lösungen, die verfügbar sind, um damit eine Vorlage kontextsensitive unter der neuen Blaze-layout sind:
1) Übergeben von Argumenten an die Vorlage direkt
2) Mit einem Helfer in der Vorlage, der versteht den Zusammenhang. Aufruf des Helfers wie folgt:
Und
InformationsquelleAutor der Antwort Jim
Dies ist, was ich getan habe, um es zu erreichen. Ich bin ziemlich neu in Meteor, so dass es vielleicht ein besserer Weg:
Slot.html:
Slot.js:
Hoffe das war eine Hilfe für Sie!
InformationsquelleAutor der Antwort Thomas Lomas
Ich in der Regel verwenden Sie diese beiden LENKER Helfer:
Können Sie es verwenden, wie folgt aus (angenommen, Sie haben eine Vorlage mit dem Namen
menuItem
):Oder innerhalb einer iteration (angenommen, Sie haben eine Vorlage mit dem Namen
userProfile
):Mit Spacebars, die Sie erreichen können, ein etwas ähnliches Verhalten.
In
partial.js
:In
partial.html
:Verwenden Sie es wie diese:
Hoffe, es wird den trick tun.
InformationsquelleAutor der Antwort Zsolt
Verwenden
this
wenn Sie passieren nur ein argument.Kein javascript benötigt, es zu tun. Wenn Sie mehr als einen argument versuchen, Dan ist Weg.
InformationsquelleAutor der Antwort Isaac Han
Diese information ist veraltet, übergeben von Argumenten wird im detail beschrieben, die für Blaze-layout-engine hier:
https://www.discovermeteor.com/blog/spacebars-secrets-exploring-meteor-new-templating-engine/
InformationsquelleAutor der Antwort Jim
viele gute Infos hier. meine Besondere situation ist, die ich auch wollte: im template-Daten.
will ich machen, das Kind Blaze-Komponente wiederverwendbar, so werden alle Daten übergeben werden müssen. als ein Beispiel, sagen wir, diese Komponente zeigt eine Güteklasse (z.B. A, B, C, usw.). auf einer Seite habe ich die Komponente verwenden möchten doppelt: Ihre Klasse, und Ihr Mitschüler Durchschnittsnote.
hier ist die untergeordnete Komponente...
Grade.html
Titel können auch hardcoded werden, in der übergeordneten, aber die Note kommt von der db.
hier ist, wie ich den code der übergeordneten...
GradePage.html
GradePage.js (im echten Leben es ist reaktiv, aber vereinfacht hier)
das ist es. die Kind-Komponente nicht zu erreichen, auf alle seine Werte.
InformationsquelleAutor der Antwort zim