我有一个应用程序,允许组内的用户查看每个成员给该组的消息,并在我的视图中使用{{#each comment}}
列出它们。我想将任何评论的编辑限制为仅使用{{#if user.user_id}}
与登录用户关联的评论。
我试图在我的每个部分中嵌套一个if语句,但它没有隐藏那些与这种情况不匹配的编辑链接。这是因为没有其他声明吗?可能是嵌套的if来自不同的对象吗?
以下是我的观点:
{{#each comment}}
<div class="col-md-7 col-md-offset-5 comment-card">
<div class="comment-card-header">
<p class="card-date">{{this.commentDateSlug}}</p>
<h3 class="card-title">{{this.title}}</h3>
</div>
<div class="comment-card-body">
<p class="card-report-link">Report: <a href="{{this.commentLink}}" class="card-data-report-url">{{comment.reportLink}}</a></p>
</div>
{{#if user.user_id}}
<p>This is the user: {{user.user_id}}</p>
<div class="annotation-card-footer">
<a href="/app/edit/{{this.commentId}}">Edit</a>
</div>
{{/if}}
</div>
{{/each}}
以下是路线:
appRoutes.route('/')
.get(function(req, res){
models.Comment.findAll({
attributes: ['commentId', 'commentDate', 'dataDateStart', 'dataDateEnd', 'title', 'discovery', 'reportLink'],
order: 'commentDate DESC',
include: [{
model: models.User,
where: { organizationId: req.user.organizationId },
attributes: ['organizationId', 'user_id']
}]
}).then(function(comment){
res.render('pages/app/high-level-activity-feed.hbs',{
comment: comment,
user: req.user
});
})
})
答案 0 :(得分:1)
听起来您要在模板中执行的操作就是仅针对div.annotation-card-footer
等于当前用户的user_id
的评论呈现user_id
在伪代码中,这看起来如下所示:
if current_user.user_id equals comment.user_id:
render div
Handlebars不支持比较运算符,因此我们需要编写自己的block helper。有关如何执行此操作的现有资源,请参阅this link,但我将提供一个示例:
Handlebars.registerHelper('ifeq', function (value1, value2, options) {
return ((value1 === value2) ? options.fn(this) : options.inverse(this));
});
现在我们已经注册了我们的帮助器,我们可以在我们的模板中使用它:
{{#ifeq this.user_id ../user.user_id}}
<p>This is the user: {{../user.user_id}}</p>
<div class="annotation-card-footer">
<a href="/app/edit/{{this.commentId}}">Edit</a>
</div>
{{/ifeq}}
使用块助手的一个优点是我们可以轻松地在其他分支上使用:
{{#ifeq this.user_id ../user.user_id}}
<p>This is the user: {{../user.user_id}}</p>
<div class="annotation-card-footer">
<a href="/app/edit/{{this.commentId}}">Edit</a>
</div>
{{else}}
{{! Non-current-user stuff goes here. }}
{{/ifeq}}