Dynamické snippety – přidávání dalších řádku do tabulky
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- BuGeR
- Člen | 45
Dobrý den,
potřeboval bych do tabulky vypsat větší množství dat, a tak to chci udělat tak, že vypíšu např. prvních 10 řádků, a po kliknutí na tlačítko „Další“ se mi přes ajax načtou další řádky.
V renderDefault() mám tedy:
public function renderDefault() {
if(!$this->isAjax()) {
$this->template->restaurants = $this->getFirstRestaurants();
}
}
Pod tabulkou v šabloně mám:
<a n:href="load!" class="ajax">Načíst další..</a>
S tím, že handleLoad vypadá nějak takto:
public function handleLoad() {
$data = $this->getFirstRestaurants();
foreach($this->restaurants->getNext() as $item) {
$data[] = $item;
}
$this->template->restaurants = $data;
$this->redrawControl("list");
}
Samotná tabulka v šabloně pak vypadá nějak takhle:
{snippet list}
<table>
<thead>...</thead>
<tbody>
{foreach $restaurants as $restaurant}
<tr n:snippet="item_$restaurant->id">
...
</tr>
{/foreach}
</tbody>
Ovšem z nějakého důvodu se mi nové řádky nenačtou. Nemáte někdo tušení, čím to může být?
Pozn: pokud odstraním ty dynamické snippety a nechám to celé obalené jen ve snippetu list, tak se mi to v pohodě načte. Ovšem nechci, aby se mi pořád znovu překreslovala celá tabulka, když se mají načíst jen nové řádky.
- David Matějka
- Moderator | 6445
S dyn. snippety to nepujde: https://forum.nette.org/…eaktualizuji#…
pouzij data-ajax-append