Sto cercando di imparare la meteora e sto incontrando qualche ostacolo. Ho un paio di modelli annidati per visualizzare tutte le informazioni dell'utente nella mia app:Come accedere alle proprietà degli utenti di Meteor nell'array?
users_list.html:
<template name='usersList'>
<div class='users'>
{{#each user}}
{{> userItem}}
{{/each}}
</div>
</template>
e user_item.html:
<template name='userItem'>
<div class='user'>
<div class='user-content'>
<h3>User:</h3>
<h4>Email: {{emails}}</h4>
<h5>ID: {{_id}}</h5>
...
</div>
</div>
</template>
e il modello helper associato:
Template.usersList.helpers({
user: function(){
return Meteor.users.find().fetch();
}
});
Questo funziona per le proprietà di livello superiore, ma se provo ad accedere esplicitamente a .addres s proprietà sull'indice 0 nella matrice di messaggi di posta elettronica modificando la linea di cui sopra in user_item.html:
<h4>Email: {{emails[0].address}}</h4>
Meteor si lamenta:
Exception in queued task: Error: Can't call non-function: [object Object]...
Questo è fonte di confusione per me, perché posso fare questo nella console :
var userz = Meteor.users.find().fetch();
userz[0].emails[0].address // "[email protected]"
Qualche idea sul perché a Meteor non piace questo?
Inoltre, stavo pensando in generale che potrei aver bisogno di memorizzare il contenuto dell'array e-mail in una variabile e ripetere lo stesso schema sopra, tranne annidando un modello email_list e email_item nel modello user_item. Questo sembra fattibile ma eccessivamente complicato per questo caso d'uso.
In definitiva, sto solo cercando di imparare e implementare un modello ragionevole per l'accesso e la visualizzazione degli attributi nidificati dei documenti nelle raccolte. Qualsiasi pensiero o guida sarà molto apprezzato.
Questo funziona in Meteor, grazie. Tuttavia, questo codice non funziona nella console. Il mio javascript è spento oggi? Non capisco perché abbiamo bisogno. notazione per ottenere l'elemento nell'indice 0 dell'array email. – Chris
Questo perché Spacebars (implementazione di Meteor di Handlebars) è qualcosa DIVERSO da JavaScript, la tua sintassi era OK per JS ma errata per il motore di template. – saimeunt
@walter collegato alla fonte delle mie pene. Grazie per l'aiuto – Chris