假设我有一个像这样的小胡子按钮
<button name="{{name}}" class="btn">{{title}}</button>
是否有可能以某种方式在直接调用部分时设置标题
<form>
....
{{> button|name=foo,title=Cancel}} {{> button|name=bar,title=Submit}}
</form>
这样可以更轻松地创建视图而不是像这样的东西,并为每个按钮创建一个哈希。
<form>
....
{{#buttons}}
{{> button}}
{{/buttons}}
</form>
答案 0 :(得分:3)
我不确定你能做到这一点,但我使用胡须功能
的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}}
答案 1 :(得分:1)
在普通的小胡子中不可能做到这一点,但在带帮手的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/
答案 2 :(得分:0)
否,您不能使用Mustache直接从模板传递变量视图数据。
但是,当使用“小胡子”时,使用列表将按钮呈现为部分是一种合适的选择:
部分:(buttons.mst)
{{#buttons}}
<button name="{{name}}" class="btn">{{title}}</button>
{{/buttons}}
模板:
<form>
...
{{> buttons}}
</form>
查看:
buttons: [
{ name: 'foo', title: 'Cancel' },
{ name: 'bar', title: 'Submit' },
]
输出:
<form>
...
<button name="foo" class="btn">Cancel</button>
<button name="bar" class="btn">Submit</button>
</form>
这实际上效果很好,因为如果不传递任何按钮,则不会呈现部分内容。
希望有帮助。