2013-03-27 19 views
10

Lets sagen, dass ich einen Schnurrbart TasteIst es möglich, Variablen zu einem Schnurrbart passiert Teil

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

wie dieser Teil haben Ist es irgendwie möglich, den Titel zu setzen, wenn die teilweise direkt wie diese

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

Dies würde es viel einfacher machen, Ansichten anstelle von etwas wie diesem zu erstellen und einen Hash für jede Schaltfläche zu erstellen.

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

Antwort

3

Ich bin nicht sicher, dass Sie das tun können, aber ich arbeitete um, dass die Verwendung Schnurrbart Funktionen

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); 

Schnurrbart

{{#func}}1{{/func}} 
{{#func}}2{{/func}} 
1

Es ist nicht möglich, es zu tun in Schnauzbart, aber es ist machbar in Lenkern mit Helfern. Lenker ist eine Erweiterung von Moustache, also können Sie einfach durch Ersetzen der Parser-Bibliothek zu diesem wechseln. Hier ist, wie es in Lenker aussehen könnte:

JS Helper (es gibt Implementierungen auch für viele andere Sprachen):

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>"); 
}); 

Verwendung in Vorlage:

{{buttton title name="name" class="class"}} 

Mehr Informationen ist hier erhältlich: http://handlebarsjs.com/

Verwandte Themen