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}}
".
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}}
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)}}
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?