{{#eachthis.cards}} Behalten Sie reaktionsfähige Flex-Eigenschaften bei, wenn Sie Arrays mithilfe von Handles iterieren-Fragen und Antworten zum chinesischen PHP-Netzwerk
Behalten Sie reaktionsfähige Flex-Eigenschaften bei, wenn Sie Arrays mithilfe von Handles iterieren
P粉098417223
P粉098417223 2023-09-02 23:45:35
0
1
492

Ich habe den folgenden Code (unter Verwendung von Handlers, Arbeitscode von JSFiddle):

{{#each this.cards}}

{{title}}

{{/jede}}
{ "3columnLayout": false, "Karten": [ { "Titel": "Karte 1" }, { "Titel": "Karte 2" }, { "Titel": "Karte 3" } ] }

Im Grunde durchläuft es das Karten-Array und erstellt für jedes Element einen card-container Verwenden Sie dann Bootstrap, um jedem Div eine CSS-Klasse zuzuweisen, zum Beispiel col-md-6

  • Mobil: Elemente werden in einer einzelnen Spalte angezeigt
  • Tabletten: Elemente erscheinen in 2 Spalten
  • Desktop: Elemente werden in 3 Spalten angezeigt

Das alles funktioniert wie erwartet und ergibt optisch die gewünschte Benutzeroberfläche (unabhängig von der Anzahl der Karten): Beispiel unten:

Wie im JSON gezeigt, benötige ich jedoch eine Eigenschaft außerhalb der einzelnen Kartenebene, um zu bestimmen, ob der Desktop von einem 4-Spalten-Layout zu einem 3-Spalten-Layout wechseln soll.

Ich wollte diese Eigenschaft nicht für jede Karte im Karten-Array wiederholen, also habe ich meinen Code wie in meinem Code-Snippet gezeigt neu organisiert (mithilfe von Handlers): https://jsfiddle.net/stcfa5wh/20/< ; /p>

Das bedeutet jetzt jedoch, dass, obwohl ich auf den Wert 3columnLayout zugreifen kann, der HTML-Code auf der Seite abgelegt wird und ich col nicht mehr verwenden kann So wie ich es mache. Vorher erledigt.

Zum Beispiel könnte ich auf einem Tablet jede image-card auf 50 % Breite einstellen, aber es ignoriert die Notwendigkeit von Zeilen.

Kann jemand eine Möglichkeit vorschlagen, die Struktur des HTML beizubehalten und gleichzeitig Attribute der obersten Ebene zu implementieren (z. B. 3columnLayout)?

P粉098417223
P粉098417223

Antworte allen (1)
P粉309989673

我不明白为什么当您尝试实现3columnLayout标志时停止使用 Bootstrap。使用 Bootstrap,我们将在每列上使用类col-lg-4来创建 3 列布局。因此,我们每列所需的条件表达式为:{{#if ../3columnLayout}}col-lg-4{{else}}col-lg-3{{/if}}.

const template = Handlebars.compile(document.getElementById('Template').innerHTML); const data = { "3columnLayout": true, "cards": [{ "title": "Card 1", }, { "title": "Card 2", }, { "title": "Card 3", }, { "title": "Card 4", }, { "title": "Card 5", }, { "title": "Card 6", }, { "title": "Card 7", }, { "title": "Card 8", } ] } const output = template(data); document.getElementById('Output').innerHTML = output;
.image-card { height: 432px; background-color: lightblue; border: 1px solid; margin-bottom: 16px; }
   
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!