Saját eseményre egyedi feladat fusson le.
Régebben már foglalkoztam a témával, azonban nem jutottam túl rajta, most előkerült megint.
Ha van egy önálló szubrutin, aminek mondjuk az a feladata, hogy előugró ablakban bekérjen egy e-mail címet, ellenőrizze annak helyességét és mentse adatbázisba, akkor az úgy a legtöbbször felhasználható és legfüggetlenebb, ah a szubrutin a saját feladatán kívül semmilyen más feladatot, parancsot nem hajt végre.
Egyszerűen megoldható, hogy legyen a dokumentumnak egy egyedi esemény figyelés és kezelés, így mikor kész a rögzítés, a szubrutin trigger-el egy készen vagyok eseményt, amire a dokumentumban hozzá társított esemény kezelő lefut.
Azt terveztem, hogy amikor elindul a szubrutin, az azt kiváltó esemény ad információt arról, hogy minek kell majd történnie ha a kiváltott esemény befejeződik. Így könnyedén megoldható, hogy egy bizonyos oldalon az e-mail cím rögzítése után töltődjön újra az oldal, egy másik oldalon meg csak egészüljön ki egy lista az új címmel.Milyen módon érhetem el az esemény kezelőben az onReady értékét? Néhány órát már próbálgattam, és többnyire undefined értéket kapok.
Vissza vissza térek ehhez a bejegyzéshez http://weblabor.hu/forumok/temak/21335, azonban ez nekem tökéletesen kínai.
Amit tudok, hogy valamilyen módon tárolni kellene a bekövetkező eseményekhez tartozó onReady eseményeket, de hogyan?
■ Ha van egy önálló szubrutin, aminek mondjuk az a feladata, hogy előugró ablakban bekérjen egy e-mail címet, ellenőrizze annak helyességét és mentse adatbázisba, akkor az úgy a legtöbbször felhasználható és legfüggetlenebb, ah a szubrutin a saját feladatán kívül semmilyen más feladatot, parancsot nem hajt végre.
Egyszerűen megoldható, hogy legyen a dokumentumnak egy egyedi esemény figyelés és kezelés, így mikor kész a rögzítés, a szubrutin trigger-el egy készen vagyok eseményt, amire a dokumentumban hozzá társított esemény kezelő lefut.
Azt terveztem, hogy amikor elindul a szubrutin, az azt kiváltó esemény ad információt arról, hogy minek kell majd történnie ha a kiváltott esemény befejeződik. Így könnyedén megoldható, hogy egy bizonyos oldalon az e-mail cím rögzítése után töltődjön újra az oldal, egy másik oldalon meg csak egészüljön ki egy lista az új címmel.
jQuery(document).ready(function(){
$(document).bind("kesz", function(e){
//itt hajtódna végre az onReady esemény
});
});
<input type="button" value="Add meg a címedet!" onclick="routEvent('/*paraméterek az eseményhez*/','/*Itt van az onReady függvény*/')" />
Vissza vissza térek ehhez a bejegyzéshez http://weblabor.hu/forumok/temak/21335, azonban ez nekem tökéletesen kínai.
Amit tudok, hogy valamilyen módon tárolni kellene a bekövetkező eseményekhez tartozó onReady eseményeket, de hogyan?
Találtam egy példát.
Találtam itt http://www.dustindiaz.com/javascript-observer-class/ egy példát, amit sikerült értelmeznem.
Nem vagyok rá büszke, de nem mondhatnám, hogy minden apró részletét értem, azonban működésre tudtam bírni...
Még sokat kell tanulnom ezen a téren.
eredeti probléma?
Nekifutok még egyszer.
Nézzünk egy példát:
Ha egy termék nyilvántartási rendszerben számlázás közben kiderül, hogy a vevő még nincs rögzítve, akkor a számlázási folyamathoz képest egy állapottalan folyamat indul el.
Ebben a példában ki a megfigyelő, ki az alany, ki a konkrét megfigyelő és ki a konkrét alany?
Talán a konkrét alanya az új vevő rögzítését folytató objektum, a konkrét megfigyelő meg a számlázó objektum? Mert ugye a számlázó objektum várja, hogy az új vevő rögzítése objektum kimondja, hogy végeztem. Ekkor a konkrét megfigyelő megszerzi az adatokat a konkrét alanytól és frissül.
Vagy a konkrét alany kimondja, hogy végeztem mire a megfigyelő értesíti azt az objektumot, ami a számlázásban a vevő adatainak megszerzéséért felelős. Az megszerzi a szükséges adatokat a konkrét alanytól és megy tovább a számlázás.
Ha elvonatkoztatnánk a programozástól, akkor a megfigyelő az egy olyan személy, aki ismeri egy közösség tagjai közötti összes relációit, így amikor bármelyik alanynál bekövetkezik egy változás, ő minden, az alannyal kapcsolatban álló megfigyelőnek szól, hogy változás történt, mire a konkrét megfigyelők (azért konkrét, mert tudja, hogy rá kihatással van a változás) megszerezhetik a számukra fontos információt az alanytól (aki emiatt a reláció miatt lesz a konkrét megfigyelő számára a konkrét alany).
Mit jelent ez pontosan? A kliens oldali javascript kód betöltődése során létre kell hozni a megfigyelőt és tudtára kell adni az összes relációt?
Hogyan valósul meg az adatelérés? Ha a konkrét alany előugró ablakban objektum, akkor kinek a feladata bezárni az előugró ablakot, miután a konkrét megfigyelő megszerezte az adatokat? És ha többen várnak az adatra?
Hú. Remélem nem fordul be senki...
ezen még dolgozni kell :)
Szóval szerintem írd le a konkrét problémát, és hogyan tervezed megoldani, és első körben ne keverj bele elméleti dolgokat, mert nehezebb érthetővé teszi a szöveget (terminológia is kicsit furcsa).
Sejtettem...
Kliens szerver modellben felépített (MVC) termék nyilvántartás klasszikus alapokon (szerver oldalon php+mysql, kliens oldalon javascript+html).
Mindent megteszek, hogy a legjobban tudjak kódot újrahasznosítani, azonban nem csak egyszerűen kódot, hanem az alkalmazás egyes komplett egységeit is.
Konkrét példa az, amikor a nyilvántartásba két különböző módon kerülhet új beszállító:
1. Az beszállítók kezelése során az új beszállító hozzáadása menüpontban
2. Új termék rögzítése közben, az új termék űrlapon
Az a célom (és minden ilyen hasonló esetben), hogy mindkét esetben ugyan az a programrész (ami egyénként egy előugró ablak) végezze el az új beszállító rögzítését. Ahhoz, azonban, hogy ez teljesülhessen, ennek a program résznek nem szabad információt hordoznia arról, hogy mi is történjen, mikor sikeresen végbemegy az új beszállító rögzítése.
Mert az 1. esetben a beszállítók listájának kell frissülnie, a 2. esetben pedig az új termék rögzítése adatlapon, a beszállítók legördülő menübe kell belekerülnie az újonnan rögzített beszállítónak.
Azt gondoltam, megtehetném azt, hogy az az esemény, ami kiváltja az új megbízó rögzítését elvégző programrész elindulását, az ezzel egy időben meghatározhatná azt is, mi történjen akkor, mikor az esemény végbement. Az esemény végbemenetelét pedig egy egyedi javascript esemény trigger-elése jelez.
Valahogy így:
1. eset:
Bekövetkezik a "kész vagyok" esemény, és kiváltáskor letárolt esemény lefut.
A bajom az, hogy megcsináltam, működik, de nem teljesen értem.
observer szvsz nem kell ide
Amúgy szerintem jól csináltad, observer ide szerintem fölösleges, hacsak nem valahogy mélyebb szinten építőeleme a rendszernek, hisz itt van egy konkrét eseményed, aminek a sikeressége esetében kell valamit csinálni.
Egy apróság: érdemes jobban odafigyelned, hogy egységes stílusban programozz (egységesen camelCase legyen), illetve ha már angol elnevezéseket használsz, akkor figyelni, hogy az angol szavakat jól írd le (rout -> route, valamint a supplyer -> supplier).
Még egy apróság: érdemes lenne a dinamikus működést leválasztani a HTML-ről, és egy init folyamat részeként ráaggatni a különböző elemekre a kezelőket. Illetve érdemes lenne úgy kialakítanod, hogy egy adott felületi elemhez tartozzon egy JS objektum, ami egységesen leírja az adott elem működését.
És még egy észrevétel: JS esetén szerintem érdemesebb lehet paraméterként objektumot használni, nem pedig több paramétert, így olvashatóbb, és flexibilisebb lehet a kódod: routeEvenet('newSupplier', {onSucces: loadSuppliers, onError:foo})
És még egy utolsó: kicsit fura ez a paraméter:
'refreshSuppliersList();'
, ugy nem evalozol ;)?Elfogadom a kritikát.
Szemléletet kell váltanom, úgy érzem ha nem lépek feljebb egy szintet, jelentősen hátráltatom a saját fejlődésemet.
s_volenszki
Jól értem?
1; Esemény hívása indul - és eldől hogy mi lesz a kimenet (de ezt csak a hívás pillanatában tudjuk meg)
2; Esemény kódja lefut;
3; Az 1; pontban leírt kimenet szerinti esemény(ek) hívása megtörténik.
Ilyenen gondolkozzak?
Igen, jól érted!
Valami olyasmi ez, mintha az én routEvent függvényem olyan lenne, mint egy ajax hívás, amiben van beforsubmit, onsucces meg onerror esemény figyelés, és az ott definiált függvények eseménytől függően lefutnak.
Lehet, hogy már az is sokat segítene, ha megértenem, egy ilyen ajax hívás hogyan épül fel. Hogyan csinálok belöle olyan objektumot, aminek vannak eseményei, eseményenként függvényei és esemény figyelői.
ajax esemény
Dugjuk be
Remélem nem baj hogy megosztottam ezen ötletet, de még van min tűnődni, és fogok is :-)
Az én esetemben...
Az én esetemben a figyelő és az alany viszonya egymáshoz képest parent és popup. Mivel stratégiailag egy parent-nek egy időben csak egy popup-ja lehet, azonban minden popup-nak lehet maximum egy popup-ja (tehát minden popup lehet parent is, amikor a popup-nak lesz saját figyelője), ezért a figyelő mindíg csak egy eseményt figyel.
s_volenszki
-
ha jol sejtem te a Signal/Slot model-t akarod keverni egy kis modalis, nem modalis gui implementacioval. Szerintem erre vannak kesz javascript keretrendszerek, hasznald szerintem azok kozul valamelyiket. Sot megkockaztatom, hogy jQuery-hez is van ilyen plugin. Neked mindossze csak az ablakozo objektumokat kell majd kezelni, illetve azok allapotat.
-cs-
Sanyi
UI.: bocs, hogy nem erdemi hozzaszolas, csak atfutott az agyamon
Nem érdemi? Ne viccelj...
Köszönöm!
-
-cs-
Sanyi