Подтвердить что ты не робот

Можно ли передавать переменные в усы частично

Предположим, что у меня есть часть усы, наподобие этой

<button name="{{name}}" class="btn">{{title}}</button>

Возможно ли каким-либо образом установить заголовок при вызове частичного, как это показано ниже?

<form>
....
{{> button|name=foo,title=Cancel}} {{> button|name=bar,title=Submit}}
</form>

Это упростит создание представлений вместо чего-то вроде этого и создание хэша для каждой кнопки.

<form>
....
{{#buttons}}
    {{> button}}
{{/buttons}}
</form>
4b9b3361

Ответ 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/