node.js - 如何在车把视图中连接字符串
问题描述
我写了一个辅助函数来帮助我格式化 URL,它是一些对象属性的组合。如何在车把视图中连接此属性?
辅助函数
const url = (link)=>{
return process.env.URL+'/'+link.replace(/ /gi,'-').toLowerCase();
};
我的观点
<a href="{{url 'samples/'+this.name+'/'+this.class+'/'+this.id}}">{{this.name}}</a>
解决方案
你可以做的是创建一个助手来连接你的字符串并将连接的字符串传递给url
助手。
在 JavaScript 中,每个非箭头函数都有一个名为arguments
assign an object的局部变量,在这个对象中你会发现(你猜对了)在调用函数时传递给函数的参数。
使用这个arguments
对象,我们可以为 Handlebars.js 创建一个帮助器,它可以让我们连接任意数量的字符串。
因为(如文档所述)arguments
对象是一个类似数组的对象,我们必须从它创建一个实际的数组,我们可以使用它来将所有内容连接在一起,Array.join
以使其尽可能简单。
Handlebars.registerHelper('concat', function() {
return [...arguments].join('');
});
但为什么会这么简单,对吧?
我在尝试此解决方案时发现,对象中的最后一个元素arguments
是一个对象,其中包含有关所使用的帮助器的一些信息,例如名称。
为了使这项工作记住一点点信息,我们必须对数组进行切片,以便删除最后一个元素,然后将其连接起来。
Handlebars.registerHelper('concat', function() {
arguments = [...arguments].slice(0, -1);
return arguments.join('');
});
我们现在有一个助手,我们可以用它来连接我们想要的任何东西,唯一要做的就是将它传递给另一个助手,url
在这种情况下是助手。
{{url (concat 'samples/' this.name '/' this.class '/' this.id)}}
^ 我在 GitHub 问题上找到了一条关于链接助手的评论,并且 Handlebars.js 显然对此具有原生支持。
我希望这会有所帮助,并且在没有正确解释的情况下,我并没有过多地喂食。
推荐阅读
- c# - 在 wpf 应用程序中使用 c# 使用事件处理程序使表格行焦点和松散焦点
- javascript - Sequelize 检查约束其他列
- awk - 在 awk 中更改 sprintf 的语言环境(LC_ALL)
- javascript - NativeBase 列表未更新
- powershell - 使用 powershell 创建 VSTS 帐户和项目
- c# - 实体框架:ComplexType 的集合
- asp.net - HTTP 错误 500.19 - 内部服务器错误 无法访问请求的页面
- reactjs - 在另一个 prop reactJS 中使用 prop 值
- gitlab - GitLab 管道中的条件自动重试
- android - phonegap build android => 找不到带有 android 7.0.0 的 apk