gpt4 book ai didi

javascript - Handlebars 数组长度条件助手

转载 作者:太空宇宙 更新时间:2023-11-04 16:08:43 25 4
gpt4 key购买 nike

我有一个场景,我试图创建一个自定义 Handlebars 助手来查看数组的长度,如果该数组中存在三个以上的对象,则仅返回前三个元素,但如果不是,然后退回全额。下面是我这样做的尝试,当我传入 limitAmount 的值时,我会返回正确数量的对象,但返回的值是 [object SequelizeInstance:blog_comment] 表示存在的对象数量。这不是我想要的,我现在想知道是否应该涉及 for 循环来传回对象的值。这只是通过 for 循环解决的吗?

显示内容的详细示例:

[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
}]

注册 Handlebars :

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}}

最佳答案

解决方案 1。 是的。您需要在助手内使用 for 循环,

hbs.registerHelper('commentLimit', function(comment, limitAmount, options) {
let res = comment;
if (comment.length > limitAmount) {
res = comment.slice(0, limitAmount);
}
let out ='';
for (var i = 0; i < res.length; i++) {
out = out + options.fn(res[i]);
}
return out;
})

解决方案 2。您可以使用内置的 each 帮助器进行迭代

{{#each (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>
{{/each}}

commentLimit 帮助器与您获得的相同。

hbs.registerHelper('commentLimit', function(comment, limitAmount, options){
if(comment.length > limitAmount){
return comment.slice(0,limitAmount);
} else {
return comment;
}
})

关于javascript - Handlebars 数组长度条件助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41686493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com