Snippet redrawControl – točím se na místě

MartiniX
Člen | 3
+
0
-

Točím se dokola a prosím o vyvedení na Říp.

  1. mám komponentu – tabulka adresář
  2. Přidávám adresu, nebo mažu (ajax vs handle updateAdress nebo deleteAdress)

vše proběhne korektně.

Nyní potřebuji aktualizovat komponentu a redrawControl mi nefunguje a že jsem zkoušel všemožné kousky. Se snippety jsem dosud nepracoval, ale prošel jsem vše možné a dle příkladů mi to nefunguje.

Nefunkčností myslím neměnný stav komponenty tableAdresar, kdy se změní tabulka až po F5, nikoli po redrawControl

Vše až na překreslení komponenty pracuje ok. Točím se na tom již hodiny.

Za každé nakopnutí díky.

.latte:

<script>
  <div n:snippet="redrawtableadresar">
     {control tableAdresar}
   </div>


.
.
.
$("#adresar-delete-adr-btn").on("click", function() {
    event.preventDefault();
    var aidToDelete = [];
       $("tr td input[type='checkbox']:checked").parents("tr").each(function(){
           aidToDelete.push($( this ).attr('adresaid'));
       });
    if(aidToDelete.length > 0) {
        var faktDelete = window.confirm("Skutečně vymazat vybrané kontakty? (" + aidToDelete.length + ")");
        if(faktDelete===true){
         var t = new Date();
    		 $.nette.ajax(
        {
		  url: "/ciselniky/?do=deleteAdresses",
        type: "POST",
		  off: ['unique'],
        data: {
            "t": t.getTime(),
            "aids": Object.assign({}, aidToDelete)
        },
        success: function(payload)
        {
            if(payload.adresy){

            }

        },
        error: function(xhr, ajaxOptions, thrownError)
        {

        }
        });


        }
    }
});

.
.
.
</script>

presenter:

/**
 * @return tableAdresar
 */
protected function createComponentTableAdresar() {
       return = new AC\TableAdresar($this->db, $this->container,$this->user);
}

public function handledeleteAdresses($aids=[]){
    if (!$this->isAjax()) {
					 $this->redirect('this');
	} else {
    if(count($aids) > 0){
         $adresar = new Model\Adresar($this->db, $this->container);
         $resultobj = $adresar->deleteKontakt($aids);
         $this->redrawControl('redrawtableadresar');
         $this->payload->result = $resultobj;
   	     $this->sendPayload();

    }
}

Editoval MartiniX (9. 6. 2019 18:34)

MartiniX
Člen | 3
+
0
-

Jen dodám, že mi to nyní funguje, pokud odstraním :

//    $this->payload->result = $resultobj;
	//    $this->sendPayload();

**Je možnost kombinovat s payload resp. sendPayload ? **

David Matějka
Moderator | 6445
+
+1
-

ahoj,

$this->payload->result = $resultobj;

tam nechat muzes, ale sendPayload odeber. ta metoda zapricini, ze se ukonci beh presenteru a nedojde tedy k prekresleni snippetu

MartiniX
Člen | 3
+
0
-

David Matějka napsal(a):

ahoj,

$this->payload->result = $resultobj;

tam nechat muzes, ale sendPayload odeber. ta metoda zapricini, ze se ukonci beh presenteru a nedojde tedy k prekresleni snippetu

Díky moc,
nečekal jsem tak rychlou reakci. Tvou přednášku o snippetech na ytb jsem samozřejmě absolvoval také – za ní díky též.
Že bude zakopaný pes v sendPayload jsem fakt vyseděl.