Diskuze: Angular - problem reaload-nut komponentu z druhej komponenty
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 3 zpráv z 3.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí JavaScript, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, manuální volání ngOnInit() je dost nešťastné
řešení.
Lepší bude, když uděláš v komponentě B EventEmitter a
nastavíš ho jako výstupní parametr. Na ten si navěsíš handler v
komponentě A, kde provedeš potřebnou změnu.
Angular nepouzivam. Ale mozna to tam funguje podobne jako request.
V js, kdyz stahujes data, tak se vola synchronni nebo asyn. request. To je
jakysi kus programu, ktery bezi mimo hlavni program. Aspon teda je lepsi pocitat
s asynchronitou. V tom requestu se sleduje udalost onload a status=200 (stranka
byla stazena). Kdyz to nastane, tak se vola callback funkce nebo nic. Podle
toho, co s tim dal chces dela.
https://developer.mozilla.org/…/HTTP/Status
https://developer.mozilla.org/…LHttpRequest
Principialne to funguje tedy asi takto:
<iframe src="" onload="funkce2(this);">
function funkce1(url)
{
document.iframe[0].src = url;
}
function funkce2(iframe)
{
data = iframe.(innercontent).document.body[0].innerHTML;
}
funkce1(url) // spusti cely proces
Cili, funkce 2 se zavola az v okamziku, kdyz skonci stahovani stranky v iframu. Cili, neni mozne to napsat takto
data = funkce1(url);
funkce2(data);
// ale musi se to napsat jako callback funkce te prvni a v te prvni zajistit, aby dostala data, kdyz uz jsou stazena.
funkce1(url, funkce2); // funkce1(url, fn) {... onload=function(window[fdn](data);
Za leta se se js hodne vyviji a tak maji na strankach mozily nekolik verzi, jak s tim pracovat. Mozna pro tebe nejsrozumitelnejsi podobne tem slovum o emiteru (v js objekt, ktery emituje/vygeneruje udalost, k zachytavani udalosti slouzi addEventListener) by mohlo byt toto:
function transferComplete(event)
{
data = event.data;
...
}
var oReq = new XMLHttpRequest();
oReq.upload.addEventListener("progress", updateProgress);
oReq.upload.addEventListener("load", transferComplete);
oReq.upload.addEventListener("error", transferFailed);
oReq.upload.addEventListener("abort", transferCanceled);
oReq.open();
Verim, ze to pujde zapsat nejak podobne.
Zobrazeno 3 zpráv z 3.