Nefunkční tooltip po redrawControl()
- jedlicka
- Člen | 70
Ahoj,
mám takový problém.
Mám tabulku nějakých zakázek. Po actionDefault
(nebo
$this->redirect('Contracts:default')
) se tabulka normálně
vykreslí a vše funguje, jak má (tooltipy, popovery apod.). Jakmile ale
přepnu na jinou stránku (handlePagitation) nebo řádky
filtruji podle textu apod., tak mi přestanou fungovat nějaké věci, např.
právě tooltip. Kódy viz níže.
Nevíte někdo prosím, kde by mohl být problém?
Díky za každou radu.
Martin
default.latte:
<table>
<thead>
...
</thead>
<tbody n:snippet="contracts_tbody">
{foreach $contracts as $c}
...
<tr>
<!-- column state -->
<td align="center" valign="middle" style="vertical-align:middle;">
<!-- circle with tooltip -->
<div class="circle_state_contracts">
<a href="javascript:void(0);" rel="tooltip" data-placement="right" data-html="true" data-original-title="Nedefinováno">-</a>
</div>
</td>
...
</tr>
...
{/foreach}
</tbody>
</table>
<div style="display: table; margin: 0 auto;">
<ul class="pagination" n:snippet="contracts_pagitation">
...
{for $i = 1; $i <= $paginator->pageCount; $i++}
<li {if $i==$paginator->page}class="active"{/if}><a id="ajax" href="{link Contracts:default,do=>pagination,page=>$i}">{$i}<span class="sr-only">(current)</span></a></li>
{/for}
...
</ul>
</div>
ContractsPresenter:
<?php
public function handlePagination() {
$page = $this->getParam('page');
$uid = $this->uid;
if ($page<1) {
$page = 1;
}
$contracts = $this->database->table('contracts')->where(array('uid'=>$uid))->order('date DESC');
$contracts = $this->getFilteredContracts($contracts);
$count = $contracts->count('id');
$paginator = new Nette\Utils\Paginator;
$paginator->setItemCount($count);
$paginator->setItemsPerPage(ContractsPresenter::PAGE_LENGHT);
$paginator->setPage($page);
$this->template->count = $count;
$this->template->paginator = $paginator;
$contracts = $contracts->limit($paginator->getLength(), $paginator->getOffset());
$this->template->contracts=$contracts;
$this->redrawControl('contracts_tbody');
$this->redrawControl('contracts_pagitation');
}
?>
- Ondřej Kubíček
- Člen | 494
nevím co je to za tooltip nebo jak je řešený, ale budeš ho muset asi znovu inicializovat, protože se změnil dom, tak na ty nové elementy, které ti vrátil snippet nejsou navěšené eventy pro tooltip
- Kcko
- Člen | 468
jedlicka napsal(a):
Díky, a co znamená „budeš ho muset asi znovu inicializovat“? Jak?
Znovu vyvolat jeho instanci, oživit ho, přebindovat, prostě aby pracoval s nově přidanou strukturou.
Je to nějaký JS, kdyby to byl jquery plugin, tak
$(‚prvek‘).nazevPluginu();
Podívej se do dokumentace nebo do svého kódu, nějak ten plugin musíš
i v současné „spustit“
Editoval Kcko (29. 6. 2018 10:59)
- Phalanx
- Člen | 310
Pokud používáš nette.ajax.js, tak si připiš do extension opětovné navázání tooltipu
<script>
$(document).ready(function() {
// standart
$('[rel=tooltip]').tooltip();
// ajax
$.nette.ext('onCompleteAjax', {
complete: function () {
$('[rel=tooltip]').tooltip();
}
});
});
</script>