web-dev-qa-db-fra.com

Guidons - Paramètres de chaîne de concaténation lors de l'appel de partial

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.

10
Vadorequest

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.

11
Hasanavi

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)}}
11
Sjeiti

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.

4
Mike Mellor

Non, ce n'est pas possible. Utilisez la concaténation dans votre assistant.

{{partial logos this ns=../ns nsr=../nsr idKey=id idValue="something"}}
1
raidendev

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

1
lingeshram

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('')

0
Jakub Krol

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") }}
0
daleyjem