Mustache.js: In Strings konvertierte Arrays

Erstellt am 9. Dez. 2011  ·  5Kommentare  ·  Quelle: janl/mustache.js

Ich habe dieses Array:
"Optionen": [
"x",
"y",
"z"
]

Wenn ich "{{Optionen}}" aufrufe, wird dies zurückgegeben: "x,y,z"

Aber ich muss ["x", "y", "z"] bekommen

Ist das ein Bug oder übersehe ich etwas?

Hilfreichster Kommentar

Ja, das ist beabsichtigt. Jeder Schlüssel, der im Datenobjekt übereinstimmt, wird in eine Zeichenfolge umgewandelt, wenn er nicht "falsch" ist. Im Fall von Arrays zwingt JavaScript sie in Strings im Format x,y,z (probieren Sie es selbst aus: Öffnen Sie Firebug und geben Sie ["x","y","z"].toString() ein und das Ergebnis sollte x,y,z sein.

Wenn Sie etwas anderes möchten, müssen Sie die Vorlage manuell schreiben. Etwas wie:

[{{#Optionen}}"{{.}}",{{/Optionen}}]

Hoffentlich hilft das.

Alle 5 Kommentare

Ja, das ist beabsichtigt. Jeder Schlüssel, der im Datenobjekt übereinstimmt, wird in eine Zeichenfolge umgewandelt, wenn er nicht "falsch" ist. Im Fall von Arrays zwingt JavaScript sie in Strings im Format x,y,z (probieren Sie es selbst aus: Öffnen Sie Firebug und geben Sie ["x","y","z"].toString() ein und das Ergebnis sollte x,y,z sein.

Wenn Sie etwas anderes möchten, müssen Sie die Vorlage manuell schreiben. Etwas wie:

[{{#Optionen}}"{{.}}",{{/Optionen}}]

Hoffentlich hilft das.

das kommt ziemlich nahe. Mit [{{#Optionen}}"{{.}}", {{/Optionen}}] erhalte ich ["x", "y", "z", ]
Leider wird das letzte Komma ein Problem sein, wenn dieser Wert erneut gespeichert wird (nachdem zum Beispiel "a" am Anfang hinzugefügt wurde). Gibt es eine Möglichkeit, das letzte Komma zu verhindern?
Oh, nach dem Speichern, ["a", "x", "y", "z", ] bekomme ich das: "[\"a,x,y,z\", ]"
Speichern von a,x,y,z ergibt das richtige Array ["a", "x", "y", "z"]
Sieht so aus, als würde ich mich besser an a, x, y, z halten.
Hoffe, ich muss nie einen Wert mit Komma speichern ...
Nun, ich denke, es gibt keine einfache Lösung, es sei denn, keinen Schnurrbart zu verwenden.
Korrigieren Sie mich, wenn ich falsch liege. Schließe das Problem.
Vielen Dank für die Hilfe!

Thema geschlossen

Tut mir leid, ich bin mir nicht sicher, was du vorhast. Ich bin mir nicht sicher, was "Speichern" bedeutet, aber um das letzte Komma in Moustache zu eliminieren, denke ich, dass die einzige Möglichkeit darin besteht, eine Flag-Variable einzuführen, indem die Liste in JavaScript vorab iteriert wird, was schnell mehr Ärger macht als es wert ist. Ich denke, die Hilfsfunktionen, die @janl aufbaut , könnten die Lösung in Moustache selbst erleichtern, aber ich bin mir nicht sicher, da ich nicht allzu vertraut damit bin.

Sehen Sie sich alternativ JSON.stringify und JSON.parse (in den Browser integriert) an, die bei der Deserialisierung von Arrays in das erwartete Format hilfreich sein können.

Ich habe die Lösung gefunden: .split(", ") hat es geschafft!
Also lade ich den Wert mit Schnurrbart in ein Feld. Dann verwende ich .split(", ) beim Speichern der Daten im Feld mit saveDoc.

12.12.2011 Sahab Yazdani <
[email protected]

Tut mir leid, ich bin mir nicht sicher, was du vorhast. Ich bin mir nicht sicher, was "sparen" bedeutet,
aber das letzte Komma im Schnurrbart zu eliminieren, ist meiner Meinung nach die einzige Möglichkeit, dies zu tun
ist es, eine Flag-Variable einzuführen, indem die Liste in JavaScript vorab iteriert wird,
was schnell zu mehr Ärger wird als es wert ist. Ich denke, die Helfer
Funktionalität, die @janl aufbaut , könnte dies einfacher zu lösen machen
Schnurrbart selbst, aber ich bin mir nicht sicher, da ich nicht allzu vertraut damit bin.

Sehen Sie sich alternativ JSON.stringify und JSON.parse an (in die
browser), die bei der Deserialisierung von Arrays in das von Ihnen gewünschte Format helfen können
erwarten.


Antworten Sie direkt auf diese E-Mail oder sehen Sie sie auf GitHub an:
https://github.com/janl/mustache.js/issues/146#issuecomment -3100397

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

ForbesLindesay picture ForbesLindesay  ·  14Kommentare

MatthijsZw picture MatthijsZw  ·  18Kommentare

amper5and picture amper5and  ·  5Kommentare

SmasherHell picture SmasherHell  ·  18Kommentare

mbrodala picture mbrodala  ·  16Kommentare