Eu tenho um modelo de barras de guia que é processado usando um objeto json. Neste json estou enviando um array. Como isso:
var json = {
"array":["abc","def","ghi","jkl"]
}
Agora, em meu modelo, quero encontrar o comprimento dessa matriz. Algo como:
{{#each item}}
{{ array.length }}
{{/each}}
Não foi possível encontrar na documentação do guiador.
javascript
templates
handlebars.js
Abhidev
fonte
fonte
Neste caso, você precisa fazer referência à variável pai de each de dentro de cada bloco:
Acho que o fato de sua variável ser chamada de "array" provavelmente está confundindo o problema também. Vamos supor algum JSON diferente apenas para esclarecer:
var json = { "fruit":["apple","orange","banana"] };
Então, fazendo isso:
<ul> {{#each fruit}} <li>{{this}} {{@index}} {{../fruit.length}}</li> {{/each}} </ul>
Iria render:
<ul> <li>apple 0 3</li> <li>orange 1 3</li> <li>banana 2 3</li> </ul>
fonte
apple 0 3
orange 1 3
banana 2 3
Você pode definir um ajudante simples para lidar com isso:
Handlebars.registerHelper('get_length', function (obj) { return obj.length; });
E então use-o em seu modelo, por exemplo:
fonte
Se você estiver testando uma lista vazia para exibir o conteúdo ... Em Ember.js que usa guiador, você pode ter um outro para o #each.
{{#each blah as |blah|}} {{else}} // If array is empty {{/each}}
fonte