2013-07-01 4 views
9

Sagen wir, ich diesen Lenker Helfer haben:Übergeben Sie SomeVar + 'eine Zeichenfolge' an Handlebars.js helper?

Handlebars.registerHelper('someRandomHelperCreatingALink', function(passedVarAndString, url) { 
    return '<a href="'+url+'">'+passedVarAndString+'</a>'; 
}); 

Und wollen es so verwenden, wo ich sowohl einen String und einen var als erstes Argument (user.name+' is a cool dude!') übergeben:

{{{ someRandomHelperCreatingALink user.name+' is a cool dude!!' '/a/cool/url' }}} 

Meine Frage: Wäre das irgendwie möglich?

Oder muss ich ein zusätzliches Argument für die Zeichenfolge hinzufügen (was wäre unnötig)? So etwas wie dieses:

Antwort

-2

Hinzufügen der Variable plus Zeichenfolge als das erste Argument scheint nicht in meinen begrenzten Tests zu arbeiten. Wenn es immer eine Variable und eine Zeichenfolge ist, die Sie an den Helfer übergeben, können Sie sie auch einfach hinzufügen, auch wenn es unnötig erscheint. Aber lassen Sie die Fremd Komma:

{{{ someRandomHelperCreatingALink user.name '/a/cool/url' ' is a cool dude!!' }}} 

Aber, wenn Sie können sich finden, eine beliebige Anzahl von Optionen vorbei, könnten Sie verwenden eine options hash:

Js:

Handlebars.registerHelper('createLink', function(options) { 
    return '<a href="' + options.hash.url + '">' + options.hash.name + '</a>'; 
    }); 

.html :

{{{ createLink name="Meteor" url="http://meteor.com" }}} 
+0

"Die Variable plus Zeichenfolge hinzufügen, da das erste Argument in meinem eingeschränkten Test nicht zu funktionieren scheint." -> Genau das möchte ich erreichen, da ich meistens nur eine Zeichenfolge übergebe, aber wie in der App muss ich eine Zeichenfolge + eine Variable übergeben. (Habe jetzt die Comas aus meinem Beispiel entfernt, habe den Code hier direkt in den Editor geschrieben, ohne wirklich darüber nachzudenken :)) Danke! –

2

Dies ist nicht möglich, da der Parameter zu diesem Zeitpunkt nur eine Zeichenfolge ist. Sie können entweder einen zweiten Helfer erstellen, um die Zeichenfolgen zu verketten, oder die Zeichenfolge zuvor in einem Controller erstellen.