- Hamarosan megkezdődik a nubia 2,8K-s táblagépének szállítása
- Barátokká váltak az eddig rivális AI-óriások
- ASUS blog: Ideális olcsó utazós gép lett az új Vivobook S14
- Az Aura Displays hordozható monitorhármasa jól felturbózhatja a produktivitást
- Dual Mode-os IPS monitorral adott magáról életjelet a Gigabyte
-
PROHARDVER!
JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)
Új hozzászólás Aktív témák
-
bandi0000
nagyúr
válasz
bandi0000 #7767 üzenetére
Na igazából rájöttem, maradjon itt az utókornak + nekemi is, ha elfelejtem
Tök jól meg van oldva, mert bármelyik componensből be lehet zárni a dialogot, csak el kell kérni a referenciáját a dialognak
private dialogRef: MatDialogRef<AccountModalComponent>
ürüm az ürümben, hogyha meghívom a dialofRef.close() metódust, akkor bármit vissza lehet adni benne, annak a komponensnek, amelyik megnyitotta a dialogot
-
petyus_
senior tag
válasz
bandi0000 #7767 üzenetére
Ha az a cél, hogy a regisztrált felhasználó egyből be is legyen léptetve, akkor az API-d register action-je akár vissza is küldheti egyből a tokent (nem tudom, hogy oldod meg a logint, gondolom jwt-vel, azt visszaadhatja a register method is), de ez csak egy tipp így hirtelen, működni működik, de nem tudom hogy szokták ezt megoldani.
-
petyus_
senior tag
válasz
bandi0000 #7765 üzenetére
Ezeket a mat-error alapból figyeli, required-öt is pl csak akkor írja ki, ha rámész az input mezőre, és kijössz belőle, tehát ha rákattintasz, de még nem írtál bele, akkor ki sem írja, csak ha úgy hagyod el, hogy üresen hagytad, vagy írtál bele, de visszatörölted.
"Errors are hidden initially and will be displayed on invalid form fields after the user has interacted with the element" - ezért, ha csak egy error-message van a fieldhez, akkor nem is kell neked foglalkozni az ngIf-ekkel, csak ha több van, és akkor is elég, ha csak az adott error-t teszed az ngIf-be
-
petyus_
senior tag
válasz
bandi0000 #7762 üzenetére
Kipróbáltam most a te validátorodat, és nekem jól működik.
Így néz ki a html:
<mat-form-field class="w-100">
<mat-label>Name</mat-label>
<input type="text" id="name" formControlName="name" matInput placeholder="Enter category name" />
<mat-error *ngIf="name.hasError('required')">Name is required.</mat-error>
<mat-error *ngIf="name.hasError('minlength')">Name must be at least 3 characters.</mat-error>
<mat-error *ngIf="name.hasError('containUpperCase')">Must conatin uppercase</mat-error>
</mat-form-field>
És a ts-ben annyit csináltam, hogy beleraktam a te functionödet, meg hozzáadtam a formcontrolhoz:
name: new FormControl('', [Validators.required, Validators.minLength(3), this.containUpperCase]),
Így üresen, és 3 karakter alatt csak a minlength hibát írja, containUpperCase-t meg utána (átneveztem containDigit-ről
).
A name az egy sima getter, vissza adja a 'this.form.control.name'-et, így átláthatódd a html.
-
petyus_
senior tag
válasz
bandi0000 #7759 üzenetére
Nemrég kezdtem el használni a materialt, tehát nem 100%, hogy én tudom jól, de "mat-error"-ból lehet több, abba kell belerakni az error-message-eket (szerkesztettem az előzőt, raktam be egy saját kódot).
Viszont itt most a ts file kéne, ahol megírtad a custom validatort.
Egyébként pl a minlength így van megírva:static minLength(minLength: number): ValidatorFn {
return (control: AbstractControl): ValidationErrors | null => {
if (isEmptyInputValue(control.value)) {
return null; // don't validate empty values to allow optional controls
}
const length: number = control.value ? control.value.length : 0;
return length < minLength ?
{'minlength': {'requiredLength': minLength, 'actualLength': length}} :
null;
};
}isEmpty ennyit csinál:
return value == null || value.length === 0;
-
petyus_
senior tag
válasz
bandi0000 #7747 üzenetére
Ha mutatsz kódot, kicsit könnyebb lenne. Írtad, hogy Materialt használsz, ott ha több hibaüzenet is van, akkor neked kell kezelned, hogy melyik mikor jelenjen meg, alapból csak annyit néz, hogy dirty || touched, és ha van hiba, akkor megjeleníti (ha több hiba van, akkor mindet). Neked megírnod mindegyik hibára, hogy melyik mikor jelenjen meg.
Illetve, ha már dirty || touched, és ezért mutatja a required hibát, akkor egyértelmű, hogy mutatja a "nincs e betű" hibát, mert ha üres, akkor nincs e betű
.
Nekem pl van egy ilyenem:
<mat-form-field>
<mat-label>Name</mat-label>
<input type="text" id="name" formControlName="name" matInput />
<mat-error *ngIf="accountName.hasError('required')">Account name is required</mat-error>
<mat-error *ngIf="accountName.hasError('minlength')">Account name must be at least 3 characters</mat-error>
</mat-form-field>Itt a required akkor jelenik meg, ha dirty || touched, a minlength-es pedig akkor, ha 1 vagy 2 karakter van beírva, de ez a gyári minlength, itt megvan írva ez a viselkedés.
-
cattus
addikt
válasz
bandi0000 #7753 üzenetére
FxLayout esetében van olyan, hogy megadod, hogy egyes méretekben hogy viselkedjen. Pl.
<div fxLayout="row" fxLayout.xs="column"></div>
esetén xs méret esetén column, felette row elrendezést használ. Így maradhat a 100% is. Van még gt-xs meg lt-xs is (meg persze a többi méretre is). -
bandi0000
nagyúr
válasz
bandi0000 #7747 üzenetére
+ egy kis Responsive ötlet is jól jönne
Szintén Angular material, + Angular Flex-Layout
Ötlet az az, hogy angularba nyitok egy dialogot a bejelentkezés és regisztrációhoz, viszont úgy szeretném megoldani a kettő közti váltást, hogy a dialogon belül 2 db gomb lenne, egymás mellett, amik egyenként elfoglalják a szélesség 50-50%-át, viszont a legkisebb állapotában minden vezérlő egymás alá kerülne
Nagyrészt ezek meg is vannak, csak az első fejtörést az okozza, hogy a dialognak kellene egyáltalán adni szélességet? mert ugye elvileg felveszi a tartalomnak a szélességét
A másik dolog, hogy ahogy összehúzom a böngészőt, a beviteli mezők szépen egymás alá kerülnek, viszont a gombok nem, ez azért lehet mert megadtam nekik, hogy 100% legyen a szélességük, ha viszont ezt kiveszem, akkor meg nem töltik ki a helyet
(beviteli mezők külön komponensben vannak, azokat alul szúrom be)<div fxLayout="column">
<div fxLayout="row" fxLayoutAlign="end">
<button mat-button (click)="closeDialog()">
<i class="material-icons">close</i>
</button>
</div>
<div fxLayout="row">
<div fxFlex="100">
<button mat-button (click)="isLoginActive= true"
[class.btn--disable]="isLoginActive"
class="full-width no-shape">Login</button>
<button mat-button (click)="isLoginActive= false"
[class.btn--disable]="!isLoginActive"
class="full-width no-shape">Registration</button>
</div>
</div>
</div>
<div *ngIf="isLoginActive">
<app-login></app-login>
</div>
<div *ngIf="!isLoginActive">
<app-registration></app-registration>
</div>
-
cattus
addikt
-
Zedz
addikt
válasz
bandi0000 #7187 üzenetére
Mi pl. ezt használjuk, de angularhoz van külön bootstrap is. Szerintem ehhez hasonló komponenseket nyugodtan használj, a "mindent kézzel készítünk" mindset egy határidős, fizetős projektnél szó szerint luxus.
Otthon persze lehet sajátot faragni, szórakozni vele, mélyebben megérteni a dolgokat, és szerintem ilyet kell is. De Gave kollégával ellentétben szerintem nem azért fizetnek minket, mert az 1923. alkalommal is előröl írunk egy komplett webapp css-t.
K1nG HuNp
Csinos a design, saját? -
Zedz
addikt
válasz
bandi0000 #7183 üzenetére
Ilyet minden gond nelkul tudsz:
<ul>
<li *ngFor="let item of items">
<bandi-component [bandiInput]="item"></bandi-component>
</li>
</ul>Tulajdonkeppen hatar a csillagos eg. Belerakhatsz egy sajat komponenst, atadod neki az aktualis adatot, az csinal vele az a komponens onnantol amit csak szeretnel. Mivel a komponens a sajat stilusat is definialja, ezert igen, ugyanolyan kinezetu is lesz.
-
martonx
veterán
válasz
bandi0000 #7175 üzenetére
De lesz, mert azokat a pixel számokat a telefon böngészője felezi, harmadolja mikor hogy (telefononként eltér, de dokumentálva van) azaz ne fizikai pixel számot figyeld, hanem hogy a böngészőben mennyi pixelnek látszik
Rémlik mintha Androidon feleződnének a pixel számok (egy bizonyos felbontás felett), Iphone retina kijelzőn harmadolódnak, vagy negyedelődnek?
Pont ezért mobilra fejleszteni webet óriási szopás, ha azt akarod, hogy mindegyiken jól nézzen ki -
bandi0000
nagyúr
válasz
bandi0000 #7175 üzenetére
Bocs a dupláért de kicsúsztam
Mit is keresek játékban tudnátok segíteni? Fogalmam sincs, hogy angularnál létezik e bár gondolom igen, de hogy mi a neve annak, ha van egy osztálytömböm amit én meg szeretnék jeleníteni formázottan, és ne kelljen megírni minden egyes sort html ben, hanem megcsinálnék 1 mintát ami alapján legenerálja a többi elemet
-
K1nG HuNp
őstag
válasz
bandi0000 #7173 üzenetére
Pontosan. Csak 2019ben már vannak jobb módok a kézi media query irásnal. Mostanában a best-practice már a mobilra megírni először az oldalt, és onnan "min-width" esetleg "min-height" queryk segítségével "felnagyítani" a weblapot ha az adott kijelsző x méretnél nagyobb.
Ha valami gyors kell akkor pl ott a bootstrap keretrendszer, amelyben ezeket megírták neked előre, te pedig csak html classokat adsz elemeknek, pl olyanokat, hogy ez a div kis méretben a képernyő felét használja, nagyban az 1/3-át
-
Jim-Y
veterán
-
Jim-Y
veterán
válasz
bandi0000 #7087 üzenetére
Attol fugg. A modi az kb ez:
template:
<md-list>
<md-list-item ng-repeat="item in $ctrl.items"></md-list-item>
</md-list>controller:
class ItemController {
constructor() { this._init(); }
async _init() {
this.items = await this.whateverService.getItems();
}
}A two-way binding miatt ha this.items modosul akkor a template is frissiti az allapotat. Nem minden esetben megy igy, van olyan, hogy ng-if-et kell hasznalni mint ahogy emlitettek is, akkor `ng-if` + spinner
-
Jim-Y
veterán
válasz
bandi0000 #7080 üzenetére
"Először is egy technikai kérdésem lenne, nem használtam soha még Ajax kérést, de ha jól tévedek, akkor a lényeg, hogy a háttérben elkéri az adatot, úgy, hogy a felhasználó semmit nem vesz észre, ilyen nincs az Angularban?"
Szerintem 100% hogy hasznaltal mar max nem tudsz rola hogy azt hasznaltad. Angular-ban ennek az egyik implementacioja a https://angular.io/guide/http angularjs-ben a $http service. Ujabb bongeszok tamogatjak a `fetch` API-t.
A websocket az mas. Websockettel tudod tobbek kozott elerni, hogy a backend is aszinkron tudjon kommunikalni a frontenddel. Igazabol mas a ketto. Az AJAX szinte minden applikacionak a resze es elengedhetetelen manapsag, websocketre pedig csak ritkan van szukseg.
-
gary89
csendes tag
válasz
bandi0000 #7076 üzenetére
Szia!
Legegyszerűbb ha az egészet becsomagolod egy promiseba, az utolsó két sort berakod a res-hez tartozó blokkba és resolve-al térsz vissza. Error esetén természetesen reject.
Nagyobb kontextus nélkül ennyit tudok mondani, emiatt a függvényed (ha van) visszatérési típusát módosítanod kell, de kb ez a legegyszerűbb.
Ha Observereket használsz és az abból származó eredményre van szükséged és return-t akarsz használni, akkor valami tervezési gond lehet.
-
bandi0000
nagyúr
válasz
bandi0000 #7049 üzenetére
bocs kicsit sok a hozzászólás...
utánajártam, és találtam egy megoldást erre, ngOninit-ba a subscribe után adok értéket a tömbnek, így csak akkor hajtódik végre, ha megjön a szervertől az adat, ez így jó is
ngOnInit() {
this.studentService.getStudents()
.subscribe((response)=>{
this.students = response;
this.sortedData = this.students.slice();
});
}De nem jövök rá, hogy mitől nem akarja rendezni az adatokat, + hogy az email mezőt jól rendezi, a többit nem, ha valakinek van ötlete hogy mit szúrtam el, akkor hálás lennék
-
bandi0000
nagyúr
válasz
bandi0000 #7048 üzenetére
Elkiabáltam
a sort nem működik
Mármint annyira igen, hogy először egy tök üres táblázatot mutat, aztán ha rányomok valamire, akkor kidobja a táblázatot,viszont nem teljesen rendezi be, gondolom azért, mert az elején egy 0-ás tömbre van meghívva a slice() és azt tölti bele a rendezett tömbbe
Lehet ezt valahogy késleltetni? Vagy csak egy if-el vizsgáljam meg, hogy van e már adat?
-
Zedz
addikt
válasz
bandi0000 #7046 üzenetére
1.7-es Angular?
Egyik élő kódom:
<mat-autocomplete #auto="matAutocomplete"
[displayWith]="displayFn">
<mat-option *ngFor="let country of (orderedCountryCodeList | async)"
[value]="country">
{{ country.countryName }} - {{ country.countryCode }}
</mat-option>
</mat-autocomplete>Ahol a lista amit megforgat:
orderedCountryCodeList: Observable<Country[]>;
-
Zedz
addikt
-
Zedz
addikt
válasz
bandi0000 #7039 üzenetére
Egyre inkább jövök rá, hogy a tutorial csak elindulásnak jó, mert egy csomó dolog szivat benne
Sok dolgot mockolnak ezekben a példákban, hogy könnyebben emészthető legyen. Aztán ja, az élet máshogy hozza, akkor kicsit ülni kell felette.
Nagyjából ennek úgy kell kinéznie amúgy, hogy minél előbb meghívod a servicet ami az adatokat szolgálja, aztán az vissza ad egy observablet. Azt szépen feldolgozod, és async megjeleníted a táblázatodban. (async pipe a templateben, keress rá).
Routerben is elintézheted az adatlekérést. Ha jól tudom akkor ez még a component betöltése előtt megfut, tehát fixen ott lesz adatod mire megjelenítésre kerül az adott component. A constructorban ettől függetlenül nem szokás business logicot helyezni, tessék szépen kiszervezni az adatok feldolgozását egy functionbe.
-
Doink
aktív tag
válasz
bandi0000 #7035 üzenetére
Mert beégette az adatokat, ha innen akarsz hívni egy service-t akkor neked így indítani a konstruktort nem sok értelme van (egy üres tömböt deklarálsz majd belekopizol egy üres tömböt). Viszont ha azon a vonalon vagy hogy resolve-olod a state-ben a service hívást akkor akár még járható út is lehet, hiszen akkor van mit lemásolni.
-
bandi0000
nagyúr
válasz
bandi0000 #7035 üzenetére
és közben +1 kérdés
Amikor ugye egy select list-ben keresek, pl város, akkor azt hogy szokták/érdemes csinálni? lekérdezem szerverről az összes várost, és abba keresek, vagy pedig úgy, hogy elküldöm a szervernek a "search term"-et, és akkor vissza kapom az arra illeszkedő városokat
-
bandi0000
nagyúr
válasz
bandi0000 #7031 üzenetére
hülyeséget mondtam, mert elvileg mindenen működik ez a slice, a példában is egy interfacet valósítottak meg
Viszont ami szerintem a hiba, hogy ha jól tévedek, a construktor előbb fut le mint az ngOninit, viszont a construktorba hívom a slice()-t, az ngOninitbe meg töltöm fel a tömböt az objektumokkal
Erre mi lehetne a megoldás? Nemes egyszerűséggel átdobtam a contruktorba a tömb feltöltést, de persze nem jutottam semmire
-
Doink
aktív tag
-
Zedz
addikt
válasz
bandi0000 #7012 üzenetére
Ha az alapvető építőelemek szerepével tisztában vagy, össze tudod őket kötni, formokat tudsz létrehozni és a szerverrel is kommunikálsz, akkor sikerülni fog.
Aztán időközben utánanézhetsz mondjuk a direktíváknak, pipe-oknak, best practicesnek. Next level téma például valami kliens oldali state manager megismerése. Ajánlom ezt.
Ahogy írtad, sok minden van ebben az egész kalandban. Menetközben szerintem úgy is elő fognak jönni az igényeid, a google jó barátod lesz.
-
Zedz
addikt
válasz
bandi0000 #6999 üzenetére
A tokeletesseg igenye nelkul itt van egy nagyon egyszeru pelda.
Nem csinaltam mast, mint egy sima formot, ami onSubmit() -kor meghiv egy servicet, ami pedig majd elintezi a dolgokat a szerverrel. Mint lathatod, a service tartalmaz egy User interfacet ami csak a tipusossag miatt kell, ha csapatban dolgozik az ember akkor szerintem feler egy ongyilkossaggal anelkul dolgozni.
Szoval a komponensedben nem csinalsz mast, mint a kapott adatot levalidalod, ha pedig oke, akkor tovabb adod a servicenek kb. ugy ahogy mutattam.
-
martonx
veterán
válasz
bandi0000 #6999 üzenetére
Van egy kliens (böngésző), és van egy szerver (PHP). Ezek között az adatok az interneten keresztül (még ha ez fejlesztői gép esetében éppen gépen belül is történik), áramolnak az adatok.
OOP ide vagy oda, az adatokat túl sokféleképpen nem tudod a kliens és a szerver között küldeni, xml / json az elterjedt formátumok (az utóbbi 10 évben persze már inkább csak a json, de ahogy az angular, úgy az xml is sokáig velünk él mégsőt forms encoded stringekkel is lehet még találkozni).
Azaz jó lesz neked a JSON-ben adatküldés. Kliens oldalon ez könnyen objektummá deszerializálható. -
cattus
addikt
válasz
bandi0000 #6999 üzenetére
Amíg az alkalmazáson belül marad az adat, addig persze, átadhatod az adott objektumként (kérdés, hogy a Form kezelésén kívül szükség van-e máshol a teljes wrappelt objektumra az adaton kívül - általában nem), a lényeg, hogy amikor a HTTP hívás megtörténik, ott már a "csupasz" JSON objektumot küldd el a szerver felé.
-
Zedz
addikt
válasz
bandi0000 #6997 üzenetére
JSON objektumot kell csinálnod a FormGroupból kinyert adatokból. Azt oda adod a httpclientnek, ami elküldi a szerverre. Az fogadja, feldolgozza, menti.
-
martonx
veterán
válasz
bandi0000 #6976 üzenetére
Angular már lejárt (szvsz nem véltelneül, mert 1.X verzió mérhetetlenül szar is volt, nem is értem, hogy hypeolhatták egyesek, 2.X-től kezdve nem ismerem, de hiszem, hogy nem véletlenül ment ki a divatból).
Ha már Single Page app és naprakész dolog, akkor a react-ot vagy még inkább a vuejs-t javaslom. Vuejs-nek elképesztőn könnyű a betanulása, kezdőknek szerintem a létező legjobb választás. -
cattus
addikt
válasz
bandi0000 #6982 üzenetére
És ez a tap fv vagy micsoda, ez mit akar csinálni? Sikeres kérésre csinál valamit, a cathError meg a sikertelenre?
A catchError igen, a tap ennél kicsit összetettebb. Dokumentáció -> [link]
Lényegében egy side-effectet csinál anélkül, hogy a forrás Observable-t megváltoztatná. Érdemes utánnanézni a pipe opreátornak és használatának -> [link]A handleError első paraméterként megkapja, hogy melyik függvényben keletkezett a hiba. Maga a handleError egy
(error: any): Observable<T>
szignatúrájú függvénnyel tér vissza. Ez a függvény kilogolja konzolra és a saját logger függvénnyel az errort, majd visszaadja az esetlegesen paraméterként kapott változót Observable-be csomagolva (erre szolgál azof(result as T)
).Utolsó kérdésedre: igen, definiálsz a backenden egy végpontot, amin JSON-ban adod vissza az adatot, majd a frontendről ezt a végpontot hívod HttpClient-tel.
-
Zedz
addikt
válasz
bandi0000 #6978 üzenetére
Webshopra például mehet, ha a kliens valami nagyon interaktív dolgot szeretne. Alapvetően én úgy gondolom, hogy ez a single page app dolog kliens heavy cuccoknál, vagy pedig for fun hobbi projekteknél éri meg.
Ha mezei de mégis CRUD dolgot akarunk, mint mondjuk a Prohardver lapcsalád, fórummal együtt, akkor arra tökéletes egy Express, egy Laravel vagy Django. Rövid pályafutásom során úgy vettem észre, hogy sokszor csak azért van használva XY dolog, mert csak azt ismeri a fejlesztő (csapat), és akkor automatikusan abba készül valami, holott lehet, hogy tipikusan ágyúval verébre szituáció lesz belőle. (khm Java khm)
De mint írtam szakdogának egy Ng + php api szerintem jófej dolog, bárcsak én is tudtam volna ilyet amikor én írtam a szakdogám.
-
Zedz
addikt
válasz
bandi0000 #6971 üzenetére
Cattus kolléga válaszát szeretném annyival kiegészíteni, hogy ha az Observable részt jobban megszeretnéd érteni, akkor:
1) Nézz utána az Observer patternnek. Ez nem Angular specifikus, hanem egy programozási tervezési minta, amit több területen is tudsz használni.
2) Nézd meg ezeket: RxJS, RxJS emberibb nyelven.Szerintem erősen ajánlott ezekkel minél előbb megismerkedni, mert nagyon hasznosak tudnak lenni.
Ha csak for fun készítesz valamit akkor mehet Angularban, de ha mondjuk production szerű dolgot csinálsz, akkor 2 táblára nem biztos, hogy ez a legjobb megközelítés.
-
cattus
addikt
válasz
bandi0000 #6973 üzenetére
Most nem tudom pontosan a tutorial-ban mi van, általában a userek felé szokták tudatni, ha egy művelet sikeres volt / failelt.
Ez nagyban függ attól, hogy a backend hogyan működik, milyen végpontjai vannak (bár ez nem mindig feltétel, lásd GraphQL), és az alapján tudja a kliens hívni. Meg attól is függ, hogy a user felé hogyan jeleníted meg az adatokat. De egy egyszerű CRUD app esetében igen, egy táblához tartozik egy API endpoint, amit meg akarsz jeleníteni valahogyan a frontenden.
-
cattus
addikt
válasz
bandi0000 #6971 üzenetére
ngOnInit és konstruktor kapcsolata: [link]
Typescriptben minden tagváltozót / tagfüggvényt this-szel kell hivatkozni osztályon belül, ez a nyelv jellegzetessége.
Miért kellett az a lambda kifejezés? Elvileg van egy HeroService, ami egy tömböt adna vissza
Nem egészen, a service egy
Observable<Hero[]>
-t ad vissza, aminek asubscribe
metódusával tudsz feliratkozni a változására, így aszinkron módon tud működni a service.ezek a service osztályok csak arra vannak, hogy adatokat szolgáltassanak
Legiknább arra, de használhatóak arra is, hogy a front-end beállításait elérhetővé tegyék a komponensek között.
a komponensek meg gyakorlatilag minden másra
A komponens a webappodnak egy adott feladatát ellátó része, rendelkezik felülettel (template), formázással (stylesheet), meg logikával (.ts kód).ő
Observable<> meg azért kell, hogy ha servertől várnám az adatot, és ha az nem érkezik meg, akkor ne omoljon össze az alkalmazás, hanem várjon addig, amíg nem kapja meg
Inkább úgy fogalmaznék, hogy így nem blokkolja a UI-t, amíg megjön az adat, tehát nem "fagy be" az alkalmazás.
Tutorialba csináltunk még üzenet kezelést, pl, amikor betöltődnek az adatok, akkor kiírja hogy sikeres volt,ezt valós alkalmazásnál is használják, vagy nem ilyen formában gondolom, hanem lementik valahova?
Mit értesz lementés alatt? Front-end kódban nagyon ritkán van szükség perzisztens adattárolásra, egy üzenet megjelenítéséhez meg nem is kell.
Új hozzászólás Aktív témák
Hirdetés
- One otthoni szolgáltatások (TV, internet, telefon)
- Milyen billentyűzetet vegyek?
- SD-kártyát vennél? Ezért ne csak a GB-ot nézd! – Tech Percek #9
- A fociról könnyedén, egy baráti társaságban
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Macron betiltatná az EU-ban a közösségi médiát a 15 év alattiaknak
- Gaming notebook topik
- Atomenergiával dübörögnek tovább az Amazon adatközpontok, SMR-ek is jöhetnek
- Luck Dragon: Asszociációs játék. :)
- Plazma TV topic
- További aktív témák...
- Apple Ipad 10.generáció
- Új HP Pavilion x360 14-ek Érintős hajtogatós Laptop Tab 14" -35% i5-1335U 8/512 FHD IPS Iris Xe
- RTX 4080 SUPER,16GB. Ryzen 7 7800X3D, 32 RAM Fury RGB! Garancia!
- Asztali PC , i7 9700K , RX 5700 XT , 32GB DDR4 , 500GB NVME , 1TB HDD
- Dell Inspiron 5406 2-in-1i5-1135G7 16GB DDR4 3200 512GB NVME 14" FHD Érintőkijelző W11Pro
- Bomba ár! Lenovo ThinkPad Yoga 260 - i5-G6 I 8GB I 256SSD I 12,5" Touch I W10 I Cam I Gari!
- A Panasonic Toughbook CF-54 i5-5300u i5-6300u TN, IPS touch Budapest, MPL Foxpost
- Azonnali készpénzes INTEL CPU NVIDIA VGA számítógép felvásárlás személyesen / postával korrekt áron
- Eladnád a telefonod? KÉSZPÉNZES OKOSTELEFON FELVÁSÁRLÁS azonnali fizetéssel!
- BESZÁMÍTÁS! Gigabyte B450M R7 2700X 16GB DDR4 512GB SSD RX VEGA64 8GB CM 690 III FSP 600W
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: CAMERA-PRO Hungary Kft
Város: Budapest