J'aimerais savoir s'il est possible de concaténer une variable avec une autre chaîne lors du chargement d'un partiel à l'aide de Handlebars.
{{partial logos this ns=../ns nsr=../nsr id=id+"something"}}
Je voudrais concatrer id+"something"
et le stocker dans id
, qui serait envoyé au modèle.
J'utilise un assistant personnalisé pour charger des partiels (partial
) qui fusionnent this
avec le options.hash
fourni par le guidon.
Il y a un moyen en fait. J'ai essayé avec le chargeur partiel par défaut ">", mais j'espère que cela fonctionnera également avec "partiel".
Vous pouvez écrire un assistant comme celui-ci
Handlebars.registerHelper( 'concat', function(path) {
return "/etc/path" + path;
});
et appelez-le comme
{{> responsive-image src=(concat '/img/item-tire.png') alt="logo" }}
J'espère que ça aide.
Voici un moyen plus simple. Un assistant nommé 'concat':
module.exports = function(){
var arg = Array.prototype.slice.call(arguments,0);
arg.pop();
return arg.join('');
};
A utiliser comme:
{{>myPartial id=(concat "foo" myVar myOtherVar)}}
Vous pourriez faire une solution légèrement plus réutilisable comme ceci:
module.exports = function (json) {
var concat = '';
var flipArray = [];
for(var key in json.hash){
flipArray.Push(json.hash[key]);
}
for(var i = (flipArray.length - 1); i >= 0; i--){
concat += flipArray[i];
}
return concat;
};
Alors appelle ça comme ça:
{{> icon name=(concat a="file-" b="pdf")}} // passes file-pdf to the partial under the hash value name
ou
{{concat a="icon-" b="pdf" c="-Asdfasd" d="zxcvzxcvzxcvxz"}} // outputs icon-pdf-Asdfasdzxcvzxcvzxcvxz
La raison de la boucle arrière dans l’aide est due au fait que le guidon répertorie actuellement ses paramètres de hachage du dernier au premier dans l’ordre dans lequel vous les déclarez.
Non, ce n'est pas possible. Utilisez la concaténation dans votre assistant.
{{partial logos this ns=../ns nsr=../nsr idKey=id idValue="something"}}
Essayez de suivre. Link helper est mon propre assistant pour ajouter un chemin de contexte/us
Handlebars.registerHelper('link', function(option,parameter) {
return '/us' + option.hash.target;
});
Handlebars.registerHelper('concat', function() {
var outStr = '';
for(var arg in arguments){
if(typeof arguments[arg]!='object'){
outStr += arguments[arg];
}
}
return outStr;
});
Alors j'ai appelé comme ça. Mon URL Avoir chiots
{{link target=(concat '/' url)}}
Enfin, finalement, je suis sorti comme ceci/us/puppies
Dans ES6, ceci est possible à l'aide de cette aide: concat : (...strs) => strs.join('')
Vous pouvez également vouloir ignorer les paramètres donnés par le guidon, à savoir: concat : (...strs) => strs.filter( arg => typeof arg !== 'object' ).join('')
Si vous faites une simple concaténation a + b
et que vous incluez déjà handlebars-helpers , vous pouvez utiliser l'aide add
:
{{> myPartial myVariable=(add someVariable "some string") }}