řešení nette.ajax.js a callbacky volané po akci na daném prvku
- mcmatak
- Člen | 505
řešil jsem pořád jak volat akci po zpracované ajax operaci, po překreslení snippetu apod., třeba se Vám pak ještě hodí provést nějakou javascript akci, třeba nechcete nějaký náročný blok překreslovat snippetem, ale uděláte jednoduchou úpravu javascriptem, tady je moje řešení
týká se tohoto dotazu
https://forum.nette.org/…jax-s-jquery?p=11
co vy na to?
BasePresenter.php
<?php
public function payloadCallback($selector, $trigger, $data = array())
{
if (!isset($this->payload->callbacks)) {
$this->payload->callbacks = array();
}
$this->payload->callbacks[] = array(
'selector' => $selector,
'trigger' => $trigger,
'data' => $data,
);
}
?>
nette.ajax extension
<script>
$.nette.ext('callbacks', {
success: function(payload) {
if (payload.callbacks) {
$.each(payload.callbacks, function (i, callback) {
var el = $('#' + callback.selector);
el.trigger(callback.trigger, [callback.data]);
});
}
}
});
</script>
definice callbacku v default.latte
<script type="text/javascript">
jQuery(document).ready(function($) {
$('#grd-gridControl').on('read', function(e, data) { $.fn.helpdesk.read($(e.target), data.idMessage); });
});
</script>
a pak vyvolání triggeru v handleru presenteru
<?php
$this->payloadCallback($this['gridControl']->getHtmlId(), 'read', array('idMessage' => $message->id));
?>
RSS tématu
Téma zavřeno