Mam szablon, który chcę używać zarówno jako częściowego, jak i samodzielnie z javascript.Handlebars.js: Użyj częściowego, jakby to był normalny, pełny szablon
Odpowiedz
Jeśli Twoje szablony są skompilowane, można uzyskać dostęp do partials poprzez Handlebars.partials['partial-name']()
jak nazywają je z szablonu poprzez {{> partial}}
pomocnika.
To jest miłe, ponieważ można następnie napisać funkcję narzędzia do renderowania szablonu, niezależnie od tego, czy jest to pełny szablon, czy częściowy.
ex:
function elementFromTemplate(template, context) {
context = context || {};
var temp = document.createElement('div');
temp.innerHTML = templates[template] ? templates[template](context) : Handlebars.partials[template](context);
return temp.firstChild;
}
myDiv.appendChild(elementFromTemplate('myPartial', context));
myDiv.appendChild(elementFromTemplate('a-whole-template'));
Nadzieja pomaga to ktoś inny, kto chce korzystać Kierownica jak ja.
Aby użyć częściowej z szablonu, należy po prostu dołączyć {{> partialName}}
.
<script id="base-template" type="text/x-handlebars-template">
<div>
{{> person}} <!-- This is the partial template name -->
</div>
</script>
<script id="partial-template" type="text/x-handlebars-template">
<div class="person">
<h2>{{first_name}} {{last_name}}</h2>
<div class="phone">{{phone}}</div>
</div>
</script>
<script type="text/javascript">
$(document).ready(function() {
var template = Handlebars.compile($("#base-template").html());
//Aliasing the template to "person"
Handlebars.registerPartial("person", $("#partial-template").html());
template(yourData);
}
</script>
I w jaki sposób renderować część z javascript (nie w szablonie)? –
Masz na myśli to -: el.html (this.template (yourData)); –
Tylko fyi, dlaczego nie jest to zaakceptowana odpowiedź: to wszystko informacje, które można łatwo znaleźć w dokumentacji Handlebar i są podstawowym użyciem częściowego. W pełni zdawałem sobie sprawę z tego, jak użyć częściowego wewnątrz szablonu, zanim zadaję pytanie, ale trzeba trochę wkopać się w źródło Handlebara, aby dowiedzieć się, jak renderować cząstkę bezpośrednio z javascriptu. –
Łatwiej zrobić to na odwrót - przygotowanie wszystkich szablonów jako normalne szablony, a następnie udostępniać je jako podszablonów:
Handlebars.partials = Handlebars.templates
Pozwala to korzystać z szablonów, jak zwykle, i jak partials, a także:
{{> normalTemplate}}
Interesujący pomysł. Czy istnieje jakiś minus lub powód, dla którego chciałbyś mieć częściowe, które nie są normalnymi szablonami? (Jeśli nie, wydaje się, że Handlebars mógłby po prostu użyć składni "{{> xxx}}" do oznaczenia innego szablonu, a nie mieć pojęcia cząstki w ogóle?) –
Dokładnie moja myśl. Nie rozumiem koncepcji cząstkowych, a muszę jeszcze znaleźć dobry powód, aby z nich skorzystać. Sądzę, że to konwencja? Lub jakąś optymalizację ... Nie ma znaczenia, czy (i powinieneś) prekompilować szablony. Być może czegoś mi brakuje, ale przy prekompilacji przynajmniej ta metoda wydaje się bezpieczna. –
Naprawdę interesujący "hack", całkiem przydatny w przypadku wstępnie skompilowanych szablonów! – Vadorequest
renderować częściowe z javascript można użyć
Handlebars.partials["myPartial"]()
- 1. Formatowanie wyników zapytania MySQL tak, jakby był uruchamiany z konsoli
- 2. Jak traktować sekcję pliku tak, jakby był samym plikiem?
- 3. Delphi IDE traktuje TFrame tak, jakby był Formą
- 4. Przechodząc szereg obiektów częściowy - handlebars.js
- 5. Wektor to nie szablon?
- 6. Przecinek Przeciągnij za pomocą handlebars.js
- 7. kątowa 2 szablon użyj konsoli. Log
- 8. Jeśli javac został napisany w Javie, dlaczego mogę wykonać javac tak, jakby był to program bez java?
- 9. Szablon JDBC - One-To-Many
- 10. Handlebars.js Else If
- 11. Jak sprawić, aby widok tekstowy Androida wyglądał tak, jakby był wyłączony?
- 12. rekurencyjne układy z Handlebars.js
- 13. GSON: Oczekiwano BEGIN_OBJECT, ale był to STRING
- 14. 'KABPersonAddressStreetKey' był nieaktualny w iOS 9.0: użyj CNPostalAddress.street
- 15. Funkcja Algorithm: Ustaw jako szablon lub użyj parametru std :: function?
- 16. Czy to możliwe, aby przekazać zmienne wąsami częściowego
- 17. Wybierz łącze na podstawie częściowego href
- 18. Node.js + Express + Handlebars.js + częściowe widoki
- 19. Związek anonimowy i normalny związek
- 20. powiedz cmake, aby był cichy
- 21. Użyj Cython jako konwertera Python to C
- 22. Wyjątek: To nie jest obsługiwane, użyj MenuItemCompat.getActionProvider()
- 23. Zrób to sam lub użyj komercyjnego CDN
- 24. RenderSection z częściowego widoku
- 25. Jak wstawić szablon do innego szablonu?
- 26. Zarządzaj i dołącz pliki Handlebars.js z Symfony 2.1 i Assetic
- 27. szablon szablon funkcji parametr
- 28. Szablon skryptu wspólnego Szablon
- 29. Brzytwa MVC 3 - Użyj odnośników do skryptu na stronie Układ z Częściowego widoku
- 30. .NET filesystemwatcher - czy był to plik czy katalog?
Handlebars.partials ['partial-name'] nie zwraca jednak funkcji, zwraca szablon (ciąg znaków). Dzięki za wskazanie. – mynameistechno
@mynameistechno Prawdopodobnie dlatego, że nie prekompilujesz swoich szablonów (tak jak powinno być!). –