web-dev-qa-db-fra.com

Une manière sensée de concaténer une chaîne et une variable dans l'argument d'aide Handlebars.js?

J'essaie de construire un composant modal simple dans Ember, mais il semble que le "sans logique" des guidons soit trop illogique pour moi. Existe-t-il un moyen sensé d'obtenir un résultat quelque peu comme ça?

<h2>Nice block about {{title}}</h2>
<a href="#" data-toggle="modal" id="add-item-{{title}}"> {{!this works}}

{{#my-modal modal-id="add-item-{{title}}" header='New {{title}}'}} {{! those don't}}
  <p>My body blabla</p>
{{/my-modal}}

Actuellement, je finis par obtenir mon identifiant modal étant "add-item-{{title}}", littéralement, ainsi que le titre modal.

Et ... non, pour l'instant je ne pense pas à passer le "titre" comme nouveau paramètre et à l'utiliser dans le modal. L'en-tête modal d'un autre modèle n'est peut-être pas "Nouveau {{title}}" mais "êtes-vous sûr?" ou "détails sur {{title}} ".

25
igorsantos07

Ce que vous recherchez, c'est le concat helper . En l'utilisant, votre deuxième exemple deviendrait:

{{#my-modal modal-id=(concat 'add-item-' title) header=(concat 'New ' title)}} 
  <p>My body blabla</p>
{{/my-modal}}
52
Mike Post

Je suis arrivé ici à la recherche d'une aide concat dans handlebars.js. Au cas où cela serait utile à quelqu'un qui atterrit ici à la recherche de la même chose, le guidon-helpers a un append helper intégré.

{{> my-modal modal-id=(append "add-item-" title) header=(append "New " title)}}

https://github.com/helpers/handlebars-helpers

1
jiminy

Oui, en passant le titre, c'est comme ça que je le fais. Si vous devez ajouter quelque chose au titre, ce n'est pas seulement model.title, puis remplissez une propriété calculée sur votre contrôleur (syntaxe d'interpolation de chaîne es6):

contrôleur

  modalHeader: function() {
    return `New ${this.get('model.title')}`;
  }.property('model.title')

modèle

{{#my-modal header=modalHeader}}
  <p>My body blabla</p>
{{/my-modal}}

En ce qui concerne l'id, vous pouvez faire des choses amusantes dans le composant pour le remplacer, voir ce codepen , mais je ne sais pas comment il dérange avec la braise. Pourquoi voulez-vous quand même définir un identifiant pour un modal?

0
Kori John Roys