У меня есть сценарий, в котором я пытаюсь создать специальный помощник handlebars, который смотрит на длину массива, и если в этом массиве присутствует более трех объектов, верните только первые три элемента, но если это не так, то верните полную сумму. Ниже была моя попытка сделать именно это, и я возвращаю нужное количество объектов, когда передаю значение для limitAmount
, но возвращаемые значения: [object SequelizeInstance:blog_comment]
для количества присутствующих объектов. Это не то, что я искал, и теперь мне интересно, нужно ли задействовать цикл for для возврата значений объектов. Это просто разрешено с помощью цикла for?Handlebars Array Length Условный помощник
Детальный пример того, что появляется:
[object SequelizeInstance:blog_comment],[object SequelizeInstance:blog_comment],[object SequelizeInstance:blog_comment]
Объект Пример структуры:
blog_comments: [
{
commentId: 1,
comment: 'Test',
userId: 2},
{
commentId:2,
comment: '2nd Test',
userId: 1
}]
зарегистрированный Руль:
hbs.registerHelper('commentLimit', function(comment, limitAmount, options){
if(comment.length > limitAmount){
return comment.slice(0,limitAmount);
} else {
return comment;
}
})
Использование в шаблоне:
{{#commentLimit blog_comments 2}}
{{#ifeq userId @root.user.userId}}
<a href="#" class="comment-delete" data-comment-id="{{commentId}}">Delete</a></p>
{{/ifeq}}
<p class="blog-comment">{{comment}}</p>
{{/commentLimit}}
Благодарим вас за ответ. Очень полезно, но я нашел проблему с использованием вашего цикла выше. Когда я следую за вашими вспомогательными модификациями и использую просто '{{#commentLimit blog_comments 2}} {{/ commentLimit}}', я получаю правильный 2-х лимит записи, но он повторяется по одной и той же записи дважды, а не первые две записи. Когда я использую '{{#each (commentLimit blog_comments 2)}} {{/ each}}' I get 'options.fn не является функцией'. Когда я просто использую оператор if с '{{#each (commentLimit blog_comments 2)}}' Я получаю правильный вывод. Любая причина для проблем с двумя первыми попытками? – cphill
О, извините. Для первого варианта Просто замените 'res [0]' на 'res [i]' в помощнике. А для второго решения достаточно вашего оригинального помощника – kumkanillam