Comment puis-je ajouter un séparateur entre les éléments de {{#chaque}} boucle sauf après le dernier élément?
J'ai un Guidon modèle où j'essaie de générer une liste séparée par des virgules des éléments d'un tableau.
Dans mon Guidon modèle:
{{#each list}}
{{name}} {{status}},
{{/each}}
Je veux le ,
à ne pas apparaître sur le dernier élément. Est-il un moyen de le faire dans le Guidon ou dois-je revenir à des sélecteurs CSS?
Mise à JOUR: sur la Base de Christopher, suggestion, c'est ce que j'ai fini la mise en œuvre:
var attachments = Ember.CollectionView.extend({
content: [],
itemViewClass: Ember.View.extend({
templateName: 'attachments',
tagName: 'span',
isLastItem: function() {
return this.getPath('parentView.content.lastObject') == this.get('content');
}.property('parentView.content.lastObject').cacheable()
})
}));
et de mon point de vue:
{{collection attachments}}
et la vue de l'article:
{{content.title}} ({{content.size}}) {{#unless isLastItem}}, {{/unless}}
- Une autre chose que j'ai trouvé est que si vous supprimez le dernier élément, vous devez forcer un renouvellement de chaque élément à supprimer le dernier séparateur. Par défaut suppression d'un élément semble être la seule à supprimer de l'affichage de cet élément et les autres ne sont pas mis à jour (ce qui est logique).
InformationsquelleAutor Chris Thompson | 2012-05-01
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser les CSS pour ce faire:
Je préfère des règles distinctes, mais d'une façon plus concise si un peu moins lisible que la version (de @Jay dans les commentaires):
:after
etlast-child
, vous pouvez utiliserli + li:before
, faisant de cette solidement IE8-preuve (n'oubliez pas de le mettre dans conforme aux normes mode de rendu!).li:not(:last-of-type):after
fonctionné pour moi 🙂Je sais je suis en retard pour les pièces mais j'ai trouvé un WAYYYY méthode la plus simple
{{#if @index}},{{/if}}
stackoverflow.com/a/20575093/923745 -- devrait travailler avec les Braises.Depuis Braise v1.11 vous êtes en mesure d'obtenir l'indice de chacun à l'aide de paramètres de bloc. Dans votre cas, cela ressemblerait à quelque chose comme ceci:
La première
index
valeur sera0
qui permettra d'évaluer àfalse
et ne sera pas ajouté, toutes les valeurs d'évaluer àtrue
qui ajoute un séparateur.Je me rends compte c'est d'un an mais j'ai eu un problème similaire et s'est retrouvé ici. Dans mon cas, j'ai été réellement affaire à un tableau. Donc, voici ma solution.
J'allais pour une solution simple et élégante qui maintient le csv logique dans le modèle.
J'ai créé sep bloc helper:
Utilisation:
Prend en charge else.
Avec ember 2.7 vous pouvez le faire après l'installation de
ember-truth-helpers
:et puis, votre modèle doit ressembler à cela:
J'ai eu ce travail avec une version modifiée de freak3dot réponse:
(Ce qui est un nœud de l'application, afin de modifier le
map
en conséquence, afin de souligner ou quoi que si vous êtes en train de construire dans le navigateur)Permet la mise en forme des objets entre chaque virgule:
Edit: Voici une version plus souple. Joindre une liste de choses sur l'arbitraire d'un séparateur.
Et modèle:
Peut-être de ce contexte, vous devriez être en train de créer une vue pour la collection, une itération de point de vue sur les objets de membre. Dans ce cas, un Guidon itérateur est exagéré. Dans mon exemple ci-dessous, les modifications du nom ou prénom sur les objets de la Personne est lié à la liste et mettre à jour la vue.
Modèle:
Javascript:
Ci-dessous est ma réponse originale à cette question, qui n'a pas fonctionné pour ce contexte.
Vous devriez être en mesure de le faire avec un helper: