Używam Handlebars (v 1.0.0) do wypełnienia tabeli w HTML. Jednak jakoś to nie wypełnia tabeli, jak jestem przyzwyczajony.Kierownica nie wypełnia tabeli
Oto mój szablon: „Nie znaleziono użytkowników”
{{#if users}}
<table>
{{#each users}}
<tr>
<td>{{username}}</td>
<td>{{email}}</td>
</tr>
{{/each}}
</table>
{{else}}
<h3>No users found!</h3>
{{/if}}
Więc może znaleźć użytkowników, bo nie widać a kiedy wołam pusty obiekt, pokazuje "Nie znaleziono użytkowników!".
Kiedy nie używam tabeli i wydrukuję tych użytkowników, tak jak w następnym przykładzie. Nazwa użytkownika i adres "pojawią się w moim kodzie HTML.
{{#if users}}
{{#each users}}
{{username}}<br/>
{{email}}<br/>
{{/each}}
{{else}}
<h3>No users found!</h3>
{{/if}}
Oto jak mój szablon jest zbudowany w javascript:
var htmlSource = $(data).html();
var template = Handlebars.compile(htmlSource);
var compiled = template(usersArray);
that.$el.html(compiled);
Teraz kiedy console.log skompilowany obiekt, nie wykazuje już tabelę.
Czy wiesz, dlaczego to nie działa i czy możesz mi pomóc?
EDIT:
Właśnie przetestowałem kilka więcej i okazało się, że dane będą wyświetlane w formacie HTML, kiedy wychodzę na zewnątrz <table>
tagi. Jednak <tr>
i <td>
nie będą wyświetlane w html. Dane w nim zostaną pokazane.
EDYCJA 2: Okazało się, że wydaje się, że problem z jquery lub javascript. Kiedy console.log się htmlSource szablon HTML jest zmieniana tak:
{{#if users}}
{{#each users}}
{{/each}}
{{else}}
<h3>No users found!</h3>
{{/if}}
<table><tr>
<td>{{username}}</td>
<td>{{email}}</td>
</tr></table>
Jak widać w tabeli zostanie przeniesiony poza if. Próbowałem innych wersji jquery (2.0.2, 2.0.3, 2.0.1, 1.10.2), ale to nie działało. Próbowałem używać skryptu innerXHTML, ale działa to tak samo jak jQuery.
Zgaduję, że może to być problem FireFox (chociaż próbowałem 25 i 26), Chrome robi to samo ... może coś w EcmaScript?
będzie wam znać wkrótce ...
EDIT 3:
stworzyłem plik HTML z html muszę. Za pomocą skryptu otrzymuję konkretną sekcję html, którą potrzebuję i umieszczam ją w zmiennej danych.
Teraz, gdy konsola rejestruje dane (console.log (dane)), nie ma w tym nic złego. Kiedy konsola loguje dane za pomocą jQuery, zmieniany jest kod HTML: console.log ($ (dane));
Wygląda na to, że coś tam jest nie tak ... ale tylko przy użyciu znaczników tabeli. Czy jest to coś, z czym jQuery nie może sobie poradzić? Nie wiem Wiem, jak przezwyciężyć ten problem za pomocą znacznika script ... Chociaż chciałbym załadować to za pomocą require;)
P.S. nemesv dziękuję za edycję;)
Zakładając, że 'usersArray' wygląda jak' {users: [...]} ', wydaje się działać zgodnie z oczekiwaniami http://jsfiddle.net/nikoshr/Rwg6y/1/ – nikoshr
Jakiej przeglądarki używasz? – MarcoL
Jak dziwne. Używam FireFox 25.0.1, a tablica plików rzeczywiście wygląda tak. Po prostu nie wiem, dlaczego nie działa z tabelą i działa bez .. iw jsfiddle działa poprawnie .. – BonifatiusK