Можно ли передавать переменные в усы частично
Предположим, что у меня есть часть усы, наподобие этой
<button name="{{name}}" class="btn">{{title}}</button>
Возможно ли каким-либо образом установить заголовок при вызове частичного, как это показано ниже?
<form>
....
{{> button|name=foo,title=Cancel}} {{> button|name=bar,title=Submit}}
</form>
Это упростит создание представлений вместо чего-то вроде этого и создание хэша для каждой кнопки.
<form>
....
{{#buttons}}
{{> button}}
{{/buttons}}
</form>
Ответы
Ответ 1
Я не уверен, что вы можете это сделать, но я работал над этим, используя функции усы
Javascript
var partial = "<div>{{value}}</div>";
var data = {some_data:[1,2,3]};
var items = {func:function (){
return function (index){
return mustache.render(partial,{value : data.some_data[index]});
}
});
mustache.render(main,items);
усов
{{#func}}1{{/func}}
{{#func}}2{{/func}}
Ответ 2
Это невозможно сделать обычным Усы, но это можно сделать в Handlebars с помощниками. Handlebars - это расширение Mustache, поэтому вы можете переключиться на него, просто заменив библиотеку парсеров. Вот как это выглядит в Handlebars:
JS Helper (существуют также реализации для многих других языков):
Handlebars.registerHelper('button', function(title, options) {
var attrs = Em.keys(options.hash).map(function(key) {
key + '="' + options.hash[key] + '"';
}).join(" ");
return new Handlebars.SafeString(
"<button " + attrs + ">" + title + "</button>");
});
Использование в шаблоне:
{{buttton title name="name" class="class"}}
Дополнительная информация доступна здесь: http://handlebarsjs.com/