如何使用对象中给定的数据构建动态 href link (Node.js && handlebars)
how to build a dynamic a href link with data given in object (Node.js && handlebars)
经过一个小时左右的搜索,我没有找到任何帮助,所以我在这里问(我的问题在第 5 行和第 6 行的第二个代码块中)。
我有一个从服务器发送到客户端的对象数组,如下所示:
router.get('/tasks', ensureAuthenticated, function(req, res, next) {
db.tasks.find({ forUser: req.params.userId }, function (err, tasks) {
res.render('tasks', { tasks: tasks }); // EACH TASK(obj) FROM TASKS(arr) HAS ITS _id
});
});
我通过手柄在客户端上展示这些任务,如下所示:
tasks.handlebars
<ul class="list-group">
{{#if tasks}}
{{#each tasks}}
<div class="list-group">
<!-- This is where I got lost, here in this href should be /task/:id -->
<a href='WHAT GOES HERE?' class="list-group-item list-group-item-action flex-column align-items-start">
<div class="d-flex w-100 justify-content-between">
<h5 class="mb-1">{{title}}</h5>
<div class="row" style="padding-left: 25px">
<small>From: {{dateCreated}}</small>
<small>To: {{deadline}}</small>
</div>
</div>
<p class="mb-1">{{description}}</p>
</a>
</div>
{{/each}}
{{else}}
<p>No tasks.</p>
{{/if}}
所以在每个任务上都应该有一个在服务器上调用它的 onclick 函数:
router.get('/task/:id', ensureAuthenticated, function(req, res, next) {
db.tasks.findOne({_id: mongojs.ObjectId(req.params.id) }, function (err, task) {
if (err) res.send(err);
res.json(task);
});
});
根据 handlebars docs,您不需要 if 块,每个块后面可以跟一个 else 在同一级别。乍一看,你想要 href="{{this._id}}"
.
经过一个小时左右的搜索,我没有找到任何帮助,所以我在这里问(我的问题在第 5 行和第 6 行的第二个代码块中)。 我有一个从服务器发送到客户端的对象数组,如下所示:
router.get('/tasks', ensureAuthenticated, function(req, res, next) {
db.tasks.find({ forUser: req.params.userId }, function (err, tasks) {
res.render('tasks', { tasks: tasks }); // EACH TASK(obj) FROM TASKS(arr) HAS ITS _id
});
});
我通过手柄在客户端上展示这些任务,如下所示: tasks.handlebars
<ul class="list-group">
{{#if tasks}}
{{#each tasks}}
<div class="list-group">
<!-- This is where I got lost, here in this href should be /task/:id -->
<a href='WHAT GOES HERE?' class="list-group-item list-group-item-action flex-column align-items-start">
<div class="d-flex w-100 justify-content-between">
<h5 class="mb-1">{{title}}</h5>
<div class="row" style="padding-left: 25px">
<small>From: {{dateCreated}}</small>
<small>To: {{deadline}}</small>
</div>
</div>
<p class="mb-1">{{description}}</p>
</a>
</div>
{{/each}}
{{else}}
<p>No tasks.</p>
{{/if}}
所以在每个任务上都应该有一个在服务器上调用它的 onclick 函数:
router.get('/task/:id', ensureAuthenticated, function(req, res, next) {
db.tasks.findOne({_id: mongojs.ObjectId(req.params.id) }, function (err, task) {
if (err) res.send(err);
res.json(task);
});
});
根据 handlebars docs,您不需要 if 块,每个块后面可以跟一个 else 在同一级别。乍一看,你想要 href="{{this._id}}"
.