Dá sa nejako redrawnut snippet z javascriptu?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
oneRow
Člen | 10
+
0
-

Čaute,
ako z nadpisu vyplýva – dá sa nejak redrawnúť snippet v javascripte? Potreboval by som niečo ako je v prezentery $this->redrawControl(„nazov“);

Dá sa to nejak zavolať v JavaScripte?

Skúsim bližšie popísať:,
 – mám v šablóne kus kódu v JavaScripte a keď sa v ňom vykoná nejaká akcia, potreboval by som prekresliť snippet, ktorý sa nachádza v šablóne vyššie

Editoval oneRow (2. 5. 2016 19:18)

CZechBoY
Člen | 3608
+
0
-

Co takhle zavolat potom

$.nette.ajax({
	url: ...
});
oneRow
Člen | 10
+
0
-

CZechBoY napsal(a):

Co takhle zavolat potom

$.nette.ajax({
	url: ...
});

Dík za rýchlu odpoved. Ja ale nechcem refreshnut celú stránku, ale iba aktualizovat snippet.

David Matějka
Moderator | 6445
+
0
-

Co si predstavujes pod „aktualizovat snippet“?

Snippety jsou jen div s nejakym ID a prave ajaxovym pozadavkem aktualizujes jeho obsah.

oneRow
Člen | 10
+
0
-

David Matějka napsal(a):

Co si predstavujes pod „aktualizovat snippet“?

Snippety jsou jen div s nejakym ID a prave ajaxovym pozadavkem aktualizujes jeho obsah.

No, jednoducho refreshnúť snippet. To čo robí $this->redrawControl() v prezentery. Ako hovoríš, aktualizovať jeho obsah.

Editoval oneRow (2. 5. 2016 19:35)

CZechBoY
Člen | 3608
+
0
-

No ale ten presenter přece zavoláš a zavoláš ho přes ten $.nette.ajax :-)

oneRow
Člen | 10
+
0
-

CZechBoY napsal(a):

No ale ten presenter přece zavoláš a zavoláš ho přes ten $.nette.ajax :-)

Aha, no tak potom som si neni isty kde mam chybu.

$.nette.ajax({
	type: 'GET',
    url: "Base:"
});

Toto mi nic nespravilo. Teda aspon v konzole firebugu mi nevypisalo, že by sa pokúsilo o nejaký AJAX. Skusal som tam dat aj Homepage:default, bez typu ale aj tak nič.

Editoval oneRow (2. 5. 2016 19:51)

Unlink
Člen | 298
+
+2
-

Použi {plink Base:} na vygenerovanie url

$.nette.ajax({
    type: 'GET',
    url: {plink Base:}
});
oneRow
Člen | 10
+
0
-

Unlink napsal(a):

Použi {plink Base:} na vygenerovanie url

$.nette.ajax({
    type: 'GET',
    url: {plink Base:}
});

Ďakujem, toto vyzerá už dobre. Problém mi však ostáva, že nemôžem tam dať Base, nakoľko je to abstraktná trieda. Abstraktnou by zrejme aj mala ostať. Ja tam totiž potrebujem aktualizovať iba modal okno, ktoré mám v @layout.latte. Je nejaká šanca to modifikovať tak aby v Base presentery redrawla tento snippet?

Unlink
Člen | 298
+
+1
-

Môžeš skúsiť do base presentera pridať handle, ktorý zabezpečí to prekreslenie

public function handleSnippetRefraw() {
    if ($this->isAjax()) {
         $this->redrawControl('nazov');
    }

a potom teoreticky by mohlo fungovať

$.nette.ajax({
    type: 'GET',
    url: {plink this do => snippetRefraw!}
});

Ale celkovo lepšie riešenie by bolo spraviť komponentu na toto.

Editoval Unlink (2. 5. 2016 20:40)

CZechBoY
Člen | 3608
+
+2
-

@Unlink Když už tak odkaz asi jen

{plink snippetRefraw!}

co kdyby se parametr do přejmenoval…

Unlink
Člen | 298
+
0
-

CZechBoY napsal(a):

@Unlink Když už tak odkaz asi jen

{plink snippetRefraw!}

co kdyby se parametr do přejmenoval…

Máš pravdu, ja som si nebol istý že či nebude nejaký problém ak to ide s makrom plink