我写了一个帮助函数来帮助我设置URL的格式,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>
答案 0 :(得分:1)
您可以做的是创建一个帮助程序来连接您的字符串,然后将连接后的字符串传递给url
帮助程序。
In JavaScript, every non-arrow function has a local variable named arguments
assigned 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)}}
^我发现a comment on an GitHub issue regarding chaining helpers,并且Handlebars.js显然对此具有本地支持。
我希望这会有所帮助,并且我不会在没有正确解释的情况下过多喂食。