Mustache.js: Arrays convertidos em strings

Criado em 9 dez. 2011  ·  5Comentários  ·  Fonte: janl/mustache.js

Eu tenho essa matriz:
"Opção": [
"x",
"s",
"z"
]

Quando eu chamo "{{Optionen}}" isso é retornado: "x,y,z"

Mas eu preciso pegar ["x", "y", "z"]

Isso é um bug ou estou perdendo alguma coisa?

Comentários muito úteis

Sim, isso é por design. Qualquer chave que corresponda ao objeto de dados será forçada em uma string se não for "falsa". No caso de arrays, JavaScript os coage em strings no formato x,y,z (tente você mesmo: abra o firebug e digite ["x","y","z"].toString() e o resultado deve ser x,y,z .

Se você quiser algo diferente, precisará escrever o modelo manualmente. Algo como:

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

Espero que ajude.

Todos 5 comentários

Sim, isso é por design. Qualquer chave que corresponda ao objeto de dados será forçada em uma string se não for "falsa". No caso de arrays, JavaScript os coage em strings no formato x,y,z (tente você mesmo: abra o firebug e digite ["x","y","z"].toString() e o resultado deve ser x,y,z .

Se você quiser algo diferente, precisará escrever o modelo manualmente. Algo como:

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

Espero que ajude.

isso chega bem perto. Usando [{{#Optionen}}"{{.}}", {{/Optionen}}] recebo ["x", "y", "z", ]
Infelizmente a última vírgula será um problema, quando este valor for salvo novamente (após, por exemplo, ter adicionado "a" no início). Existe uma maneira de evitar essa última vírgula?
Ah, depois de salvar, ["a", "x", "y", "z", ] recebo isso: "[\"a,x,y,z\", ]"
salvar a,x,y,z fornece o Array correto ["a", "x", "y", "z"]
Parece que é melhor eu ficar com a,x,y,z.
Espero que nunca precise salvar um valor com vírgula...
Bem, acho que não há solução fácil a não ser não usar bigode.
Corrija-me que estou errado. Fechando o assunto.
Muito obrigado por ajudar!

assunto encerrado

Desculpe, não tenho certeza do que você está tentando fazer. Não tenho certeza do que "salvar" significa, mas para eliminar a última vírgula no Mustache, acho que a única maneira de fazer isso é introduzir uma variável de sinalizador pré-iterando a lista em JavaScript, o que rapidamente se torna mais problemático do que vale a pena. Acho que a funcionalidade de ajudantes que @janl está construindo pode facilitar a solução no próprio Mustache, mas não tenho certeza, pois não estou muito familiarizado com isso.

Alternativamente, veja JSON.stringify e JSON.parse (incorporados ao navegador) que podem ajudar na deserialização de arrays para o formato que você espera.

Encontrei a solução: .split(", ") consegui!
Então eu carrego o valor com bigode em um campo. Então eu uso .split(", ) ao salvar os dados no campo com saveDoc.

12/12/2011 Sahab Yazdani <
[email protected]

Desculpe, não tenho certeza do que você está tentando fazer. Não tenho certeza do que "salvar" significa,
mas para eliminar a última vírgula do bigode, acho que a única maneira de fazer isso
é introduzir uma variável sinalizadora pré-iterando a lista em JavaScript,
que rapidamente se torna mais problema do que vale a pena. acho que os ajudantes
funcionalidade que @janl está construindo pode tornar isso mais fácil de resolver em
Bigode em si, mas não tenho certeza, pois não estou muito familiarizado com ele.

Como alternativa, consulte JSON.stringify e JSON.parse (incorporado ao
navegador) que pode ajudar na deserialização de arrays no formato que você
estão esperando.


Responda a este e-mail diretamente ou visualize-o no GitHub:
https://github.com/janl/mustache.js/issues/146#issuecomment -3100397

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Immortalin picture Immortalin  ·  12Comentários

amper5and picture amper5and  ·  5Comentários

zekth picture zekth  ·  18Comentários

mbrodala picture mbrodala  ·  16Comentários

rlightner picture rlightner  ·  7Comentários