Ответ 1
{{#each skills}}
<li>{{this}}</li>
{{/each}}
Я нашел много примеров использования помощника {{#each}}
для итерации по многомерным массивам, но я не могу понять, как получить доступ к каждому значению в одномерном массиве.
Например, возьмите этот массив:
skills: ['Design', 'Development', 'HTML5', 'CSS', 'JavaScript'],
Как я могу вывести каждый элемент в помощнике, как показано ниже?
template: Handlebars.compile(
'<div>' +
'{{#each skills}} {{ the_item_output }} {{/each}}' +
'</div>'
),
Что мне нужно разместить в {{ the_item_output }}
, чтобы увидеть фактический элемент?
{{#each skills}}
<li>{{this}}</li>
{{/each}}
В массиве скалярных значений должна использоваться грамматика Simple Iterators. Вам нужно объявить блок #each
в свойстве skills
.
Заполнитель для каждого значения может быть либо {{this}}
, либо {{.}}
.
Вам нужно использовать следующий шаблон:
{{#each skills}}
<li>{{this}}</li>
{{/each}}
В качестве альтернативы вы можете использовать #list
.
{{#list skills}}
<li>{{.}}</li>
{{/list}}
function listToHTML(items) {
return '<ul>' + items.map(function(item) {
return '<li>' + item + '</li>';
}).join('') + '</ul>';
}
Handlebars.registerHelper({
scalar_list_raw : function(items) {
return listToHTML(items);
},
scalar_list_safe_string: function(items) {
return new Handlebars.SafeString(listToHTML(items));
},
});
var data = {
skills: [ 'Design', 'Development', 'HTML5', 'CSS', 'JavaScript' ],
};
$(function() {
var source = $("#skills-template").html();
var template = Handlebars.compile(source);
$('body').append(template(data));
});
ul li {
list-style-type: upper-roman;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/4.0.3/handlebars.min.js"></script>
<script id="skills-template" type="text/x-handlebars-template">
<h2>Skills - [Block] Each</h2>
<ul>
{{#each skills}}
<li>{{this}}</li>
{{/each}}
</ul>
<h2>Skills - [Helper] SafeString</h2>
{{scalar_list_safe_string skills}}
<h2>Skills - [Helper] Raw HTML</h2>
{{{scalar_list_raw skills}}}
</script>