Что вы можете сделать для этого, это создать помощник для объединения ваших строк и передачи объединенной строки в помощник url
.
В JavaScript каждая функция без стрелки имеетлокальной переменной с именем arguments
назначен объект , в этом объекте вы найдете (как вы уже догадались) аргументы, переданные функции при ее вызове.
Используя этот объект 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, по-видимому, имеет встроенную поддержку для этого.
Я надеюсь, что это помогло, и что я много не кормил ложкой, не объяснив это правильно.*