У меня есть этот массив:
"Опционен": [
"Икс",
"у",
"з"
]
Когда я вызываю "{{Optionen}}", возвращается: "x,y,z"
Но мне нужно получить ["x", "y", "z"]
Это ошибка или я что-то упускаю?
Да, это по дизайну. Любой ключ, который соответствует объекту данных, будет преобразован в строку, если он не является «ложным». В случае массивов 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
Самый полезный комментарий
Да, это по дизайну. Любой ключ, который соответствует объекту данных, будет преобразован в строку, если он не является «ложным». В случае массивов JavaScript преобразует их в строки в формате
x,y,z
(попробуйте сами: откройте firebug и введите["x","y","z"].toString()
, результат должен бытьx,y,z
.Если вы хотите что-то другое, вам нужно написать шаблон вручную. Что-то типа:
Надеюсь, это поможет.