Hirdetés

2024. május 6., hétfő

Gyorskeresés

Téma összefoglaló

Téma összefoglaló

  • Utoljára frissítve: 2014-02-25 10:20:57

LOGOUT.hu

JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)

Összefoglaló kinyitása ▼

Hozzászólások

(#7001) bandi0000 válasza cattus (#7000) üzenetére


bandi0000
nagyúr

rendben, köszönöm mindkettőtöknek :R

Xbox One: bandymnc

(#7002) martonx válasza bandi0000 (#6999) üzenetére


martonx
veterán

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ég :D ső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ó.

Én kérek elnézést!

(#7003) bandi0000 válasza martonx (#7002) üzenetére


bandi0000
nagyúr

Lehet félreérthető voltam, vagy épp én értelek félre :D kliens és szerver között mindképp json be megy az adat

Én két komponens között kérdeztem ezt, van egy formos komponens, és az adja át valamilyen formába az adatot ugye egy másik komponensek, aki majd átalakítja json be és küldi tovább a szervernek, és e két komponens között akkor mind1 hogy milyen formátumba csak menjen az adat :D

Xbox One: bandymnc

(#7004) Zedz válasza bandi0000 (#6999) üzenetére


Zedz
addikt

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.

(#7005) bandi0000 válasza Zedz (#7004) üzenetére


bandi0000
nagyúr

köszönöm, igazából megválaszoltad ezzel már a kérdésem, bár így lett még1 :D

...formValue pontosan mi? vagyis gondolom, hogy belerakja az objektumba, de pontosan mit jelent?

onSubmit(formValue: any) {
const user: User = {
...formValue,
}

this.userService.saveUser(user);
}

Xbox One: bandymnc

(#7006) Zedz válasza bandi0000 (#7005) üzenetére


Zedz
addikt

(#7007) bandi0000 válasza Zedz (#7006) üzenetére


bandi0000
nagyúr

köszönöm

Meg is lett a Form, átadtam, próbálom menteni, de valami hibám van ,amire nem jövök rá, vagyis sejtem...

JSON.stringify()-t használom, hogy az objektumból JSON formátumot kreáljak, ezt ki is írattam konzolra, és ezt adta:

{"student":{"id":10,"lastName":"efefe","firstName":"efefe","age":5,"postCode":null,"email":"eefefe"}}

student a legelső pozícióban nem tudom miért került oda? Lehet csak a kiíratásnál keletkezett, de Http Error Respenso-t is dob, yntaxError: Unexpected token d in JSON at position 0

Bár ahogy olvasom, lehet a válasszal lenne baja?

Xbox One: bandymnc

(#7008) Zedz válasza bandi0000 (#7007) üzenetére


Zedz
addikt

Szeretném, ha magadtól keresnéd meg a probléma okát. Félre ne érts, nagyon szívesen segítek és írok példákat ha kell, de ezt egy kis kutatással magad is meg tudod oldani. :K

(#7009) bandi0000 válasza Zedz (#7008) üzenetére


bandi0000
nagyúr

Persze értelek, elsőszőr én is keresek, csak még ismeretlen kicsit ez, gondolom mivel az angular dobta a hibát akkor ott kutakodjak először?

Xbox One: bandymnc

(#7010) Zedz válasza bandi0000 (#7009) üzenetére


Zedz
addikt

Biztos, hogy az angular dobta? :)
Nekem ez valamilyen JSON formázós hibának tűnik. ;)

(#7011) bandi0000 válasza Zedz (#7010) üzenetére


bandi0000
nagyúr

Meg lett :D

Én voltam a balf@asz, megadtam, az eredetileg használt optionst a post-nak, de közbe abban az volt, hogy json-t vár vissza, PHP-ban, meg nem adtam vissza semmit

Xbox One: bandymnc

(#7012) bandi0000


bandi0000
nagyúr

Mit érdemes még megnéznem, hogy majd gond nélkül meg tudjam csinálni a frontendet?

eddig amik voltak:

Megvannak hogyan épülnek fel, komponensek,service stb
útvonalakat is tudom haszálni
reactive form+validáción rajta vagyok, de már ezt is csináltam

Gondolom,hogy sok dolog van ebbe az Angulárba, szóval lehet értelmetlen volt a ez a kérdésem :D

Xbox One: bandymnc

(#7013) Zedz válasza bandi0000 (#7012) üzenetére


Zedz
addikt

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. :)

(#7014) bandi0000


bandi0000
nagyúr

Egy ideje már keresem, de nem tudom mire kellene rákeresnem, hogy meglegyen

Lényeg, hogy hogyan tudnék olyan Formot csinálni, ahol egy kereső mező van, abba amit beírok, megkeresi a várost, és behelyettesíti az irányítószám mezőbe a városhoz tartozó számot

Igazából a neheze meg van, tehát kilistázom és elvileg kiválasztom a várost, amihez elvileg egy click eseményt kötöttem, de nem helyettesíti be az irányítószám mezőbe...

+szerintem elég kókler is lett, szóval az lenne a legjobb ha tudnátok erre valami példát adni, mert én nem igen találok hasonlót

Xbox One: bandymnc

(#7015) cattus válasza bandi0000 (#7014) üzenetére


cattus
őstag

Használj autocomplete-et és iratkozz fel az optionSelected eseményére -> [link]

Do the thing!

(#7016) bandi0000 válasza cattus (#7015) üzenetére


bandi0000
nagyúr

Fajin, köszi, van itt mindenre megoldás csak győzze az ember összepakolgatni :D

Xbox One: bandymnc

(#7017) bandi0000 válasza bandi0000 (#7016) üzenetére


bandi0000
nagyúr

ezt csak ezzel a materialos cuccal lehet megcsinálni mi? Ha jól értem ez kész elemeket tartalmaz, amiből fel tudom építeni a weboldalt?

Xbox One: bandymnc

(#7018) cattus válasza bandi0000 (#7017) üzenetére


cattus
őstag

Ja igen, azt elfelejtettem mondani. Én most a munkahelyen ezt használom és szerintem kifejezetten jó, sokmindent készhez kapsz.

Do the thing!

(#7019) bandi0000 válasza cattus (#7018) üzenetére


bandi0000
nagyúr

fél dél előtöm rá ment, míg rájöttem, hogy miért nem működik, mert fele cuccot bele se raktam :D

De most ezzel akkor fel lehetne építeni CSS nélkül egy konkrét weboldalat?
Gondolom ha beépítem, akkor tudok szelektálni, hogy melyik stílusokat akarom használni, és melyiket nem, ha egyedi weboldalat akarok

Xbox One: bandymnc

(#7020) cattus válasza bandi0000 (#7019) üzenetére


cattus
őstag

Eléggé megköti a kezed, mi legalábbis a témázáson kívül nem nagyon nyúlunk bele a default kinézetbe (persze lehet, de nem tudom, mennyire kín). Ha valami nagyon egyedit szeretnél, akkor lehet, hogy mást érdemes keresned.

Do the thing!

(#7021) bandi0000 válasza cattus (#7020) üzenetére


bandi0000
nagyúr

nem néztem bele igazán mélyen, hogy mit lehet kihozni belőle, igazából én odáig meg vissza vagyok a material kinézetért, szal tetszik, csak nem akarom, hogy túlságosan hasonlítson más weboldalakhoz

Xbox One: bandymnc

(#7022) Zedz válasza bandi0000 (#7021) üzenetére


Zedz
addikt

Pedig a materiallal ezt nehezen tudod csak elkerülni. :))

(#7023) Jim-Y válasza Zedz (#7022) üzenetére


Jim-Y
veterán

Egyeb elemekkel siman ellensulyozni lehet a material stilusat. Mmint igen, egy material dropdown kb ugyanugy nez ki minden weboldalon de attol meg maga az oldal tud ugy kinezni - ezekkel az elemekkel - hogy az nagyban kulonbozzon minden mastol.

Szoval csak ez, ne vessen vissza abban, hogy materialt hasznalj @bandi0000.

[ Szerkesztve ]

(#7024) bandi0000


bandi0000
nagyúr

jó hát nem omlik össze a világ, ha nem ez lesz a legegyedibb, elég sok szopástól kímél ez meg szerintem, hogy megérje, belenéztem és nagyon sok jó cucc van benne, amit egyszerűbb használni mint megírni

Xbox One: bandymnc

(#7025) Zedz válasza Jim-Y (#7023) üzenetére


Zedz
addikt

Ja, értelek. Mondjuk egy jó pár éve már kint van ez az irányelv, aztán tavalyi google dev konferencián még ők mondták, hogy ahogy kiadták úgy elkezdte mindenki használni és egykaptafára készült minden. Azóta a guideline is bíztat a formákra, egyediségre.. etc.

[ Szerkesztve ]

(#7026) bandi0000


bandi0000
nagyúr

kérdés

Használni próbálom ezt a sorted table-t a materialba, de hibát dob a Slice-ra

Létezik, hogy ez csak tömbökön működik? Mert utánanézve mintha ilyesmi lenne

és ha igen, akkor ha objektum tömbböm van, akkor mit csináljak? Alakítsam sima tömbbé?

Xbox One: bandymnc

(#7027) Zedz válasza bandi0000 (#7026) üzenetére


Zedz
addikt

Esetleg tobb infot kaphatnank? :)

(#7028) bandi0000 válasza Zedz (#7027) üzenetére


bandi0000
nagyúr

Jah, bocsesz :D
[ezt] csináltam, de a slice-ra hibát ad, ha objektumra hívom meg, de ahigy olvastam a slice() az tömbökre használható

Xbox One: bandymnc

(#7029) Zedz válasza bandi0000 (#7028) üzenetére


Zedz
addikt

Csak nekem hibas a link? :F

(#7030) Doink válasza bandi0000 (#7028) üzenetére


Doink
aktív tag

(#7031) bandi0000 válasza bandi0000 (#7028) üzenetére


bandi0000
nagyúr

[javítva]

Akkor ezek szerint csak sima tömbbön működik

Xbox One: bandymnc

(#7032) bandi0000 válasza bandi0000 (#7031) üzenetére


bandi0000
nagyúr

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 :D

Xbox One: bandymnc

(#7033) Doink válasza bandi0000 (#7032) üzenetére


Doink
aktív tag

Minek hívod meg a slice-t a konstruktorban? Gondolom te http-n kapsz valamit és annak az eredményét beteszed egy változóba és ennyi.

És igen a slice az tömbön működik. Így paraméter nélkül meg semmit se csinál csak egy shallow copyt.

[ Szerkesztve ]

(#7034) Zedz válasza bandi0000 (#7032) üzenetére


Zedz
addikt

Ezt nagyon alaposan tessék elolvasni. :K

(#7035) bandi0000 válasza Doink (#7033) üzenetére


bandi0000
nagyúr

Mert a példában is úgy csinálták

constructor() {
this.sortedData = this.desserts.slice();
}

desserts egy interface-t valósít meg

igen, szervertől kapok adatot, és ngOnInit-ben töltöm fel a tömbjét

viszont a példában van egy ideiglenes változó amiben rendezi az adatokat, ezért kell átadni neki azt a tömböt

Zedz: Rendben, azt hittem erőből menni fog ez :D

[ Szerkesztve ]

Xbox One: bandymnc

(#7036) bandi0000 válasza bandi0000 (#7035) üzenetére


bandi0000
nagyúr

é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

Xbox One: bandymnc

(#7037) Doink válasza bandi0000 (#7035) üzenetére


Doink
aktív tag

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.

(#7038) Zedz válasza bandi0000 (#7036) üzenetére


Zedz
addikt

Mind a két féle képp szokták csinálni, de szerintem könnyebb lenne ha úgy próbálnád, ha letöltenéd az összes várost, és csak localban szűrnéd a listát. :)

(#7039) bandi0000 válasza Doink (#7037) üzenetére


bandi0000
nagyúr

Ezt az angular tutorialból szedtem, ezek szerint akkor nem így csinálják a valós alkalmazásnál?

Egyre inkább jövök rá, hogy a tutorial csak elindulásnak jó, mert egy csomó dolog szivat benne

Zedz: mindkettőt csináltam már,kisebb nagyobb sikerrel

Már nekem is ég a pofámról a bőr, hogy ilyen sokat kérdezek, de az első mindig a gugli, és aztán jövök ide, de ahogy észreveszem, inkább konstrukciós hibákat csinálok

[ Szerkesztve ]

Xbox One: bandymnc

(#7040) martonx válasza bandi0000 (#7036) üzenetére


martonx
veterán

Adatmennyiségtől, használattól függ.
SPA esetben, ha nem sok ezer elemű listáról van szó, akkor nyugodtan letöltheted mindet, és minden esetben újra felhasználhatod a listát.

Én kérek elnézést!

(#7041) Zedz válasza bandi0000 (#7039) üzenetére


Zedz
addikt

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. :))

[ Szerkesztve ]

(#7042) bandi0000 válasza Zedz (#7041) üzenetére


bandi0000
nagyúr

Még1 és befejeztem :D

arra mi a bevált módszer,ha a fentebb javasult material-selectet használnám, de az is string tömböt eszik, nekem meg ugye objektum tömbböm van

+ ugye ha kiválasztja a várost pl, akkor annak hatására rögtön beíródik az irányítószám, ezért lenne jó az objektum, mert akkor ezt könnyen meg lehet oldani, ha csak 1 tömbben lenne a város név, akkor viszont keresést kéne csinálnom az irányítószám alapján

[ Szerkesztve ]

Xbox One: bandymnc

(#7043) Zedz válasza bandi0000 (#7042) üzenetére


Zedz
addikt

(#7044) bandi0000 válasza Zedz (#7043) üzenetére


bandi0000
nagyúr

Persze , [aoutocomplete] kell nekem, mert itt lehet ugye keresni is, nem csak kiválasztani, de itt egy string tömböt használ

Xbox One: bandymnc

(#7045) Zedz válasza bandi0000 (#7044) üzenetére


Zedz
addikt

Ugyanúgy megküldheted objektum tömbbel is, mint a mezei selectet.

(#7046) bandi0000 válasza Zedz (#7045) üzenetére


bandi0000
nagyúr

Igen, csak a [filter] elvileg nem működik objektum tömbbel

Hopsz, azt nem figyeltem na keresgélek akkor :DD

[ Szerkesztve ]

Xbox One: bandymnc

(#7047) Zedz válasza bandi0000 (#7046) üzenetére


Zedz
addikt

1.7-es Angular? :DDD

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[]>;

[ Szerkesztve ]

(#7048) bandi0000


bandi0000
nagyúr

Na sikerült működésre bírnom a sport-ot is és az autocomplete-ot is

Mindkettőnél az volt a baj, hogy hamarabb akart használni valamilyen metódust az objektum tömbön, mint ahogyan az megkapta volna az adatokat, legalább is szerintem

Annyit kellett csak csinálnom, hogy ahol létrehoztam az objektum tömböket, annak adtam kezdőértéknek egy üres tömböt, és így jó lett

Ez mennyire jó megoldás? Megoldás szempontjából hibátlanul működik, de ezt eleve így kellett volna, vagy csak találtam egy kiskaput ? :D

Xbox One: bandymnc

(#7049) bandi0000 válasza bandi0000 (#7048) üzenetére


bandi0000
nagyúr

Elkiabáltam :D

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?

Xbox One: bandymnc

(#7050) bandi0000 válasza bandi0000 (#7049) üzenetére


bandi0000
nagyúr

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

teljes forráskód

Xbox One: bandymnc

Copyright © 2000-2024 PROHARDVER Informatikai Kft.