Como o título da pergunta diz, existe uma maneira de bigode / guidão de percorrer as propriedades de um objeto ?
Então com
var o = {
bob : 'For sure',
roger: 'Unknown',
donkey: 'What an ass'
}
Posso então fazer algo no mecanismo de modelo que seria equivalente a
for(var prop in o)
{
// with say, prop a variable in the template and value the property value
}
?
{{#each this}}
. Sua escolha de termos também é confusa (o que torna um objeto "de nível superior" e outro não? O que são chaves "predefinidas" exatamente? Etc)); portanto, você pode revisitar esses conceitos.Na verdade, é muito fácil de implementar como auxiliar:
Depois, use-o assim:
fonte
EDIT: O guidão agora tem uma maneira interna de fazer isso; veja a resposta selecionada acima. Ao trabalhar com bigode comum, o seguinte ainda se aplica.
O bigode pode iterar sobre itens em uma matriz. Então, sugiro criar um objeto de dados separado, formatado de forma que o Bigode possa trabalhar:
Agora, seu modelo de bigode seria algo como:
Confira a seção "Listas não vazias" aqui: https://github.com/janl/mustache.js
fonte
Esta é a resposta de @ Ben atualizada para uso com o Ember ... note que você deve usar
Ember.get
porque o contexto é passado como uma String.Modelo:
fonte
@ A resposta de Amit é boa porque funcionará tanto no bigode quanto no guidão.
Quanto às soluções exclusivas do guidão, já vi algumas e gosto do
each_with_key
auxiliar de bloco em https://gist.github.com/1371586 da melhor maneira.'key'
, ou'property'
, etc.fonte
Obrigado pela solução de Ben, meu caso de uso para exibir apenas campos específicos em ordem
com objeto
Código:
Objeto de origem:
Modelo:
Resultado:
fonte
Essa é uma função auxiliar do mustacheJS, sem pré-formatar os dados e obtê-los durante a renderização.
Modelo:
Saídas:
(a ordem pode ser aleatória - é um mapa) Isso pode ser útil se você souber o elemento do mapa que deseja. Cuidado com os valores falsos.
fonte
Eu estava usando a versão antiga
1.0.beta.6
do guidão, acho que em algum lugar durante 1.1 - 1.3 essa funcionalidade foi adicionada, então a atualização para a 1.3.0 resolveu o problema, aqui está o uso:Uso:
fonte