Ho tre semplici modelli in Meteor e una raccolta sul server con qualsiasi combinazione dei loro nomi. Voglio essere in grado di renderizzare questi modelli dinamicamente in base a quale dei loro nomi sono nella collezione.Come rendere un modello di meteore dalla raccolta di nomi di modelli?
Attualmente sto cercando di farlo utilizzando il client per iscriversi alla raccolta e accedere ai nomi tramite una funzione di modello. Sfortunatamente, se provo a eseguire ">" sui nomi, Meteor tenta di rendere il nome della variabile al posto del Modello puntato sul suo valore.
Così, invece di rendere il codice HTML in template1, template2, e template3, l'uscita è semplicemente i loro nomi sulla pagina: "template1 template2 template3".
Ecco il codice che ho utilizzato, spero che ci sia un modo per risolvere il mio problema senza dover eseguire Meteor.render manualmente.
JS Server: html
TemplatesToRender = new Meteor.Collection("templatesToRender");
TemplatesToRender.insert({templateName: "template3"});
TemplatesToRender.insert({templateName: "template2"});
Cliente:
<body>
{{#each templatesToRender}}
{{> templateName}} // meteor trying to render a template
// called "templateName" instead of the
// variable inside templateName.
{{/each}}
</body>
<template name="template1">
<span>Template 1</span>
</template>
<template name="template2">
<span>Template 2</span>
</template>
<template name="template3">
<span>Template 3</span>
</template>
+1 grande soluzione! – Marc
Questo è esattamente quello che sto cercando, grazie! –
Il problema qui è la gestione della memoria, sta rigenerando il modello più e più volte perché si chiama la funzione 'Template [nome]()'. Questo metodo è bello, ma non rimuovere il modello correttamente quando viene sostituito. Lo controllo, e dopo aver inserito e rimosso alcuni tousand fivs, ottieni 50 mb di memoria accumulata! Aggiornamento –