Elements
webforJ-kehittäjät voivat valita paitsi runsaasta komponenttien kirjastosta, myös integroida komponentteja muualta. Tämän helpottamiseksi Element-komponenttia voidaan käyttää yksinkertaistamaan mitä tahansa integraatiota yksinkertaisista HTML-elementeistä monimutkaisiin mukautettuihin verkkokomponentteihin.
Element-komponenttia ei voi laajentaa, eikä se ole peruskomponentti kaikille webforJ:n komponenteille. Lue lisää webforJ:n komponenttipuusta lukemalla tämä artikkeli.
Näytä koodi
- Java
- CSS
Tapahtumien lisääminen
Jotta voit hyödyntää elementtiisi liittyviä tapahtumia, voit käyttää Element-komponentin addEventListener-menetelmiä. Tapahtuman lisääminen vaatii vähintään tapahtuman tyypin/nimen, jota komponentti odottaa, ja kuuntelijan, joka lisätään tapahtumalle.
On myös lisävaihtoehtoja tapahtumien ulkoasun mukauttamiseksi käyttämällä Event Options -asetuksia.
Näytä koodi
- Java
- CSS
Komponenttien vuorovaikutus
Element-komponentti toimii säilönä muille komponenteille. Se tarjoaa tavan organisoida ja hakea tietoja lapsikomponenteista ja tarjoaa selkeän toimintavalikoiman näiden lapsikomponenttien lisäämiseksi tai poistamiseksi tarpeen mukaan.
Lapsikomponenttien lisääminen
Element-komponentti tukee lapsikomponenttien yhdistämistä. Kehittäjät voivat organisoida ja hallita monimutkaisia käyttöliittymärakenteita lisäämällä komponentteja lapsiksi Elementtiin. Kolme menetelmää on olemassa sisällön asettamiseksi Element-komponenttiin:
-
add(Component... components): Tämä menetelmä sallii yhden tai useamman komponentin lisäämisen valinnaiseenString:iin, joka osoittaa tietyn slotin käytettäväksi Web-komponentin kanssa. Slotin jättämättä jättäminen lisää komponentin HTML-tunnisteiden väliin. -
setHtml(String html): Tämä menetelmä ottaa parametrina annetunStringinja injektoi sen HTML:nä komponenttiin. RiippuenElement-komponentista, tämä voi renderöidä eri tavoin. -
setText(String text): Tämä menetelmä toimii samalla tavalla kuinsetHtml()-menetelmä, mutta injektoi kirjaimellisen tekstinElement-komponenttiin.
Näytä koodi
- Java
- CSS
setHtml()- tai setText()-kutsuminen korvataa sisällön, joka tällä hetkellä sijaitsee elementin avaus- ja sulkutunnisteiden välillä.
Komponenttien poistaminen
Lisäksi komponenttien lisäämiseen Elementiin on käytössä seuraavat menetelmät erilaisia lapsikomponentteja varten:
-
remove(Component... components): Tämä menetelmä ottaa yhden tai useamman komponentin ja poistaa ne lapsikomponenteina. -
removeAll(): Tämä menetelmä poistaa kaikki lapsikomponentitElementistä.
Komponenttien hakeminen
Voit käyttää erilaisia lapsikomponentteja, jotka ovat läsnä Elementissä, tai tietoja näistä komponenteista, seuraavia menetelmiä:
-
getComponents(): Tämä menetelmä palauttaa JavaList:in kaikistaElementinlapsista. -
getComponents(String id): Tämä menetelmä on samanlainen kuin yllä oleva menetelmä, mutta ottaa palvelinpuolen ID:n tietyltä komponentilta ja palauttaa sen, kun se löydetään. -
getComponentCount(): Palauttaa lapsikomponenttien lukumäärän, jotka ovat läsnäElementissä.
JavaScript-funktioiden kutsuminen
Element-komponentti tarjoaa kaksi API-menetelmää, jotka mahdollistavat JavaScript-funktioiden kutsumisen HTML-elementeille.
-
callJsFunction(String functionName, Object... arguments): Tämä menetelmä ottaa funktionsimen merkkijonona ja valinnaisesti yhden tai useamman objektin parametrina funktiolle. Tämä menetelmä suoritetaan synkronisesti, mikä tarkoittaa, että suorittava säie on estetty kunnes JS-menetelmä palautuu, ja tuloksena on pyörämatka. Funktioiden tulokset palautetaanObjectina, joka voidaan muuntaa ja käyttää Javassa. -
callJsFunctionAsync(String functionName, Object... arguments): Kuten edellisessä menetelmässä, funktionsimen ja valinnaisten argumenttien ansiosta voidaan myös siirtää. Tämä menetelmä suoritetaan asynkronisesti eikä estää suorittavaa säiettä. Se palauttaaPendingResult:n, joka mahdollistaa lisävuorovaikutuksen funktion ja sen tietojoukon kanssa.
Parametrien siirtäminen
Näihin menetelmiin siirretyt argumentit, joita käytetään JS-funktioiden suorittamisessa, serialisoidaan JSON-taulukoksi. Kaksi huomionarvoista argumenttityyppiä käsitellään seuraavasti:
this:this-avainsanan käyttäminen antaa menetelmälle viittauksen asiakaspuolen instanssiin, joka kutsuu komponenttia.Component: Kaikki Java-komponentti-instanssit, jotka siirretään johonkin JsFunction-menetelmistä, korvataan asiakaspuolen komponentilla.
Sekä synkroniset että asynkroniset funktiokutsut odottavat, että Element on lisätty DOM:iin ennen funktion suorittamista, mutta callJsFunction() ei odota enempää komponenttiargumentteja liitettäväksi, mikä voi johtaa epäonnistumiseen. Toisaalta callJsFunctionAsync()-kutsun suorittaminen ei ehkä koskaan pääty, jos komponenttiargumenttia ei liitetä.
Alla olevassa demossa HTML Button-elementille lisätään tapahtuma. Tätä tapahtumaa ammutaan sitten ohjelmallisesti kutsumalla callJsFunctionAsync()-menetelmää. Tuloksena oleva PendingResult käytetään sitten luomaan toinen viestiruudun, kun asynkroninen toiminto on valmis.
Näytä koodi
- Java
- CSS
JavaScriptin suorittaminen
JavaScriptin suorittamisen lisäksi sovellustasolla on myös mahdollista suorittaa JavaScriptiä Element-tasolla. Tämä suoritus Element-tasolla mahdollistaa HTML-elementin kontekstin sisällyttämisen suoritukseen. Tämä on voimakas työkalu, joka toimii kehittäjän väylänä vuorovaikutteisiin mahdollisuuksiin asiakaspuolen ympäristöissä.
Samoin kuin funktioiden suorittaminen, JavaScriptin suorittaminen voidaan tehdä synkronisesti tai asynkronisesti seuraavilla menetelmillä:
-
executeJs(String script): Tämä menetelmä ottaaStringin, joka suoritetaan JavaScript-koodina asiakkaassa. Tämä skripti suoritetaan synkronisesti, mikä tarkoittaa, että suorittava säie on estetty kunnes JS-suoritus palautuu ja tuloksena on pyörämatka. Funktion tulokset palautetaanObjectina, joka voidaan muuntaa ja käyttää Javassa. -
executeJsAsync(String script): Kuten edellisessä menetelmässä, annettuString-parametri suoritetaan JavaScript-koodina asiakaspuolella. Tämä menetelmä suoritetaan asynkronisesti eikä estää suorittavaa säiettä. Se palauttaaPendingResult:n, joka mahdollistaa lisävuorovaikutuksen funktion ja sen tietojoukon kanssa.
Nämä menetelmät pääsevät component-avainsanaan, mikä antaa JavaScript-koodille pääsyn asiakaspuolen komponenttiin, joka suorittaa JavaScriptiä.