访问/ articles时我有以下处理程序:
exports.articles = (function(req, res) {
Article.find( function(err, articles){
if(err) {
res.send(500, { error: err });
}
res.render('articles', { articles: articles });
});
});
这是相应的观点:
<section id="articles">
{{#each articles}}
<article class="geometry">
<h4>{{ title }}</h4>
<hr>
<p>{{ content }}</p>
<!-- LINK TO ARTICLE HERE -->
</article>
{{/each}}
</section>
我想构建LINK,以便每当有人点击它时,浏览器都应该导航到/ article / title-with-dashes-instead-spaces。基本上,我想在标题上附加title.replace(/ \ s / g,' - ')之后使用它。有没有办法在使用把手的视图上格式化它?还是应该在后端完成?
谢谢!
答案 0 :(得分:2)
我想它确实属于后端。在那里做起来很容易:
Article.find( function(err, articles){
if(err) {
res.send(500, { error: err });
}
articles.forEach(function(article) {
article.link = '/article/' + article.title.replace(/\s/g, '-');
});
res.render('articles', { articles: articles });
});
我宁愿将此代码作为Article
方法插入generateLink()
模型,因为它简化了重用。
另一种方法是注册Handlebars助手......
Handlebars.registerHelper('articleLink', function() {
return '/article/' + this.title.replace(/\s/g, '-');
});
...然后在模板中使用它:
<article class="geometry">
<h4>{{ title }}</h4>
<hr>
<p>{{ content }}</p>
<a href="{{ articleLink }}">Link</a>
</article>