Mustache.js: Массивы, преобразованные в строки

Созданный на 9 дек. 2011  ·  5Комментарии  ·  Источник: janl/mustache.js

У меня есть этот массив:
"Опционен": [
"Икс",
"у",
"з"
]

Когда я вызываю "{{Optionen}}", возвращается: "x,y,z"

Но мне нужно получить ["x", "y", "z"]

Это ошибка или я что-то упускаю?

Самый полезный комментарий

Да, это по дизайну. Любой ключ, который соответствует объекту данных, будет преобразован в строку, если он не является «ложным». В случае массивов JavaScript преобразует их в строки в формате x,y,z (попробуйте сами: откройте firebug и введите ["x","y","z"].toString() , результат должен быть x,y,z .

Если вы хотите что-то другое, вам нужно написать шаблон вручную. Что-то типа:

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

Надеюсь, это поможет.

Все 5 Комментарий

Да, это по дизайну. Любой ключ, который соответствует объекту данных, будет преобразован в строку, если он не является «ложным». В случае массивов JavaScript преобразует их в строки в формате x,y,z (попробуйте сами: откройте firebug и введите ["x","y","z"].toString() , результат должен быть x,y,z .

Если вы хотите что-то другое, вам нужно написать шаблон вручную. Что-то типа:

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

Надеюсь, это поможет.

это довольно близко. Используя [{{#Optionen}}"{{.}}", {{/Optionen}}], я получаю ["x", "y", "z", ]
К сожалению, последняя запятая будет проблемой при повторном сохранении этого значения (например, после добавления «а» в начале). Есть ли способ предотвратить эту последнюю запятую?
О, после сохранения ["a", "x", "y", "z", ] я получаю следующее: "[\"a,x,y,z\", ]"
сохранение a,x,y,z дает правильный массив ["a", "x", "y", "z"]
Похоже, мне лучше придерживаться a, x, y, z.
Надеюсь, мне никогда не нужно сохранять значение с запятой...
Ну, я думаю, что нет простого решения, кроме как не использовать усы.
Поправьте меня, это я ошибаюсь. Закрытие вопроса.
Большое спасибо за помощь!

проблема закрыта

Извините, не уверен, что вы пытаетесь сделать. Не уверен, что означает «сохранение», но чтобы убрать последнюю запятую в Mustache, я думаю, что единственный способ сделать это — ввести флаговую переменную путем предварительной итерации списка в JavaScript, что быстро становится больше проблем, чем пользы. Я думаю, что вспомогательные функции, которые создает @janl , могут упростить решение этой проблемы в самом Mustache, но я не уверен, так как я не слишком хорошо знаком с этим.

В качестве альтернативы посмотрите JSON.stringify и JSON.parse (встроенные в браузер), которые могут помочь в де/сериализации массивов в ожидаемый формат.

Я нашел решение: .split(", ") сделал это!
Поэтому я загружаю значение с усами в поле. Затем я использую .split(", ) при сохранении данных в поле с помощью saveDoc.

12.12.2011 Сахаб Яздани <
ответ@reply.github.com

Извините, не уверен, что вы пытаетесь сделать. Не уверен, что означает "сохранение",
а вот убрать последнюю запятую в Усе я думаю единственный способ это сделать
заключается в том, чтобы ввести переменную флага путем предварительной итерации списка в JavaScript,
который быстро становится больше проблем, чем стоит. Я думаю, помощники
функциональность, которую создает @janl , может упростить решение этой проблемы в
Усы сами по себе, но я не уверен, так как я не слишком знаком с ним.

В качестве альтернативы посмотрите JSON.stringify и JSON.parse (встроенные в
браузер), который может помочь в де/сериализации массивов в формат, который вы
ожидают.


Ответьте на это письмо напрямую или просмотрите его на GitHub:
https://github.com/janl/mustache.js/issues/146#issuecomment -3100397

Была ли эта страница полезной?
0 / 5 - 0 рейтинги