Mam trzy proste szablony w Meteorze i kolekcję na serwerze z dowolną kombinacją ich nazw. Chcę móc dynamicznie renderować szablony w oparciu o ich nazwy w kolekcji.Jak renderować szablon Meteor z kolekcji nazw szablonów?
Obecnie próbuję to osiągnąć, używając klienta do zasubskrybowania kolekcji i dostępu do nazw poprzez funkcję szablonu. Niestety, jeśli spróbuję uruchomić ">" na nazwach, Meteor próbuje renderować nazwę zmiennej zamiast szablonu wskazywanego przez jej wartość.
Więc zamiast renderowania html w template1, Template2 i template3, wyjście jest tylko ich nazwiska na stronie: "template1 Template2 template3".
Oto kod, którego używam, mam nadzieję, że istnieje sposób na rozwiązanie mojego problemu bez konieczności ręcznego uruchamiania Meteor.render
js Server: html
TemplatesToRender = new Meteor.Collection("templatesToRender");
TemplatesToRender.insert({templateName: "template3"});
TemplatesToRender.insert({templateName: "template2"});
Klient:
<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 świetne rozwiązanie! – Marc
Dokładnie tego szukam, dzięki! –
Problemem jest tu zarządzanie pamięcią, on ponownie generuje szablon, ponieważ wywołuje się funkcję 'Template [nazwa]()'. Ta metoda jest dobra, ale nie należy jej poprawnie usuwać po wymianie. Testuję to, a ty, po włożeniu i usunięciu kilku tysięcy koni, dostajesz 50 MB pamięci! –