<body>
<!--This is our template. -->
<!--Data will be inserted in its according place, replacing the brackets.-->
<script id="t" type="text/x-handlebars">
{{#each_when profile "gender" "female"}}
{{from}} ({{gender}})<br>
{{/each_when}}
</script>
<!--Your new content will be displayed in here-->
<div class="content-placeholder"></div>
<script>
var json = {
"profile": [
{ "gender": "female", "from": "Olivia" },
{ "gender": "female", "from": "Meagen" },
{ "gender": "female", "from": "Aaron" },
{ "gender": "female", "from": "Aaron" }
]
};
Handlebars.registerHelper('each_when', function(list, k, v, opts) {
console.log(arguments);
var i, result = '';
for(i = 0; i < list.length; ++i)
if(list[i][k] == v)
result = result + opts.fn(list[i]);
return result;
});
Handlebars.registerHelper('get_length', function (obj) {
return obj.length;
});
var t = Handlebars.compile($('#t').html());
$('body').append(t(json));
</script>
</body>
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/handlebars.js/2.0.0/handlebars.js"></script>
</head>
<body>
<!--This is our template. -->
<!--Data will be inserted in its according place, replacing the brackets.-->
<script id="t" type="text/x-handlebars">
{{#each_when profile "gender" "female"}}
{{from}} ({{gender}})<br>
{{/each_when}}
</script>
<!--Your new content will be displayed in here-->
<div class="content-placeholder"></div>
<script>
var json = {
"profile": [
{ "gender": "female", "from": "Olivia" },
{ "gender": "female", "from": "Meagen" },
{ "gender": "female", "from": "Aaron" },
{ "gender": "female", "from": "Aaron" }
]
};
Handlebars.registerHelper('each_when', function(list, k, v, opts) {
console.log(arguments);
var i, result = '';
for(i = 0; i < list.length; ++i)
if(list[i][k] == v)
result = result + opts.fn(list[i]);
return result;
});
Handlebars.registerHelper('get_length', function (obj) {
return obj.length;
});
var t = Handlebars.compile($('#t').html());
$('body').append(t(json));
</script>
</body>
</html>
Результат:
- Оливия (женщина)
- Meagen (женщина)
- Aaron (женщина)
- Aaron (женщина)
, но я хочу только первые один:
- Оливия (женский)
Кроме того, я использую {{}} @index показать индекс массива, но это не работает для меня. Я что-то упускаю?
Вы говорите, что используете {{@index}}, но в своем коде я его не вижу. Я что-то упускаю? – 76484
Вы хотите, чтобы первый элемент в массиве _after_ был отфильтрован для «женщин» или «раньше»? – 76484
Да, я хочу, чтобы первый элемент в массиве после его фильтрации. –