mieć dwa problemy:
- Teraz brakuje zamykające cytat w
<img>
ale to nie jest wielka sprawa.
- Twój szablon jest przechowywany w ukrytym
<div>
lub podobnym elemencie zawierającym HTML.
Jeśli powiesz tak:
<div id="t" style="display: none">
<img class="someClass" src="{{imgURL}}">
</div>
przeglądarka zinterpretuje <img>
jako prawdziwego obrazu i spróbuj załadować zasobu określonego w atrybucie src
, to gdzie 404:
GET http://localhost:8888/%7B%imgURL%7D%7D 404 (Not Found)
pochodzi z. Szablony są rzadko poprawne i prawidłowo uformowane w HTML, więc musisz uniemożliwić przeglądarce interpretowanie szablonu jako HTML. Zazwyczaj podejście jest przechowywanie szablonu w <script>
z non-html type
:
<script id="t" type="text/x-handlebars-template">
<img class="someClass" src="{{imgURL}}">
</script>
Wtedy można powiedzieć Handlebars.compile($('#t').html())
aby uzyskać skompilowany szablon i przeglądarka nie spróbuje zinterpretować treść #t
jako HTML.
Czy szablon jest dołączany do strony, zanim zostanie przeanalizowany przez silnik szablonów? Jeśli tak, nie widzę żadnego obejścia. –
Nie wierzę w to. Wykonuję wywołanie ajax, które łapie moje zewnętrzne szablony kierownicy. Buforuję te szablony, a później mam funkcję, która pobiera dane json i znajduje odpowiedni szablon do użycia jako źródło, a następnie kompiluję źródło i przekazuję dane json do tego skompilowanego szablonu. Czy jest coś w tej metodzie, która spowodowałaby te ostrzeżenia? – swallace
To jest dziwne. Cóż, gdy utworzysz element obrazu ze źródłem, przeglądarka poprosi o próbę jego buforowania. Jeśli szablon jest analizowany jako ciąg, a następnie przetwarzany na elementy DOM, które nie powinny się zdarzyć. W każdym razie możesz zignorować tego rodzaju ostrzeżenie, po prostu informuje Cię, że żądany plik nie został znaleziony (to jest tuż przed zamianą źródła i ładuje się ponownie), zwykli użytkownicy końcowi nie mają otwartych konsol podczas przeglądania Twoja strona. '=]' –