2016-09-03 2 views
0

Je n'arrive pas à trouver un moyen de le faire, et j'ai essayé des sous-expressions et diverses autres réponses postées sur StackOverflow - mais elles semblent toutes supposer que je connais le clé que j'utilise à l'avance.Accéder aux variables tableau/objet par clé, dans un guidon moustache

J'ai l'objet suivant:

{ 
    fields: { 
     1: { 
      complete: 1, 
      submitted: 0 
     }, 
     2: { 
      complete: 1, 
      submitted: 0 
     } 
} 

etc., etc.

Dans mon modèle Guidons, je suis en boucle à travers un tableau d'objets. Chaque objet de ce tableau a une clé field_id qui correspond à la valeur 1 ou 2 de l'exemple ci-dessus.

J'ai besoin d'accéder aux variables de la structure de tableau ci-dessus, en fonction de l'attribut field_id en cours de bouclage. J'ai essayé:

{{fields[(field_id)].complete}}

{{fields[{{field_id}}].complete}}

{{fields.(field_id).complete}}

{{fields.({{field_id}}).complete}}

Et aucun d'entre eux travaillent.

Existe-t-il une façon de procéder?

+0

D'où vient 'field_id' venir? – 76484

Répondre

1

Je pas créer une aide personnalisée pour ce . Au lieu de cela, j'utiliser le Lookup helper existant en partenariat avec le with block helper:

{{#with (lookup fields field_id) as |field|}} 
    {{field.complete}} 
{{/with}} 

Sinon, vous pouvez utiliser l'assistant de recherche avec un subexpression:

{{lookup (lookup fields field_id) 'complete'}} 
+0

J'ai utilisé la dernière solution ici, beaucoup plus propre que mon assistant personnalisé. Merci beaucoup! – gazchap

0

J'ai fait ce travail en enregistrant une aide personnalisée:

Handlebars.registerHelper('getfield', function (data, field_id, key) { 
    var val = (data[ field_id ]) ? data[ field_id ][ key ] : ''; 
    return val; 
}); 

et fait usage de cela dans mes modèles avec:

{{getfield fields field_id 'complete'}}