PROTOTYPE kilép az objektumból?
Sziasztok!
Lenne egy problémám. Létrehozok egy objektumot, egy select mezőt. Aztán ajax-al lekérem a tartalmát. Ez az objektum egy funkciója lenne. A szerver válaszának feldolgozását rábízom egy funkcióra, mely szintén az Objektum része. Azonban ekkor már nem tudom lekérni az objektum adatait (pl. a select ID-jét amit az elején, az objektum létrehozásánál adok meg neki)
Íme a kód:
// JavaScript Documentés az objektum meghívása:Az ajax (prototype) miatt "esik" ki a program az objektumból? vagy valami alapvető hibát vétettem?
(BUÉK)
■ Lenne egy problémám. Létrehozok egy objektumot, egy select mezőt. Aztán ajax-al lekérem a tartalmát. Ez az objektum egy funkciója lenne. A szerver válaszának feldolgozását rábízom egy funkcióra, mely szintén az Objektum része. Azonban ekkor már nem tudom lekérni az objektum adatait (pl. a select ID-jét amit az elején, az objektum létrehozásánál adok meg neki)
Íme a kód:
// JavaScript Document
function AnswerClear(ClearingAnswer)
{
var ClearingAnswer = ClearingAnswer.substring(2);
SplitAnswer = ClearingAnswer.split('//');
if (SplitAnswer[1] != "OK")
{
alert (SplitAnswer[1]);
ClearAnswer = "";
}
else
{
ClearAnswer = SplitAnswer[2];
}
return ClearAnswer;
}
function CountryList(ID)
{
this.CountryFormID = ID;
this.QueryURL = 'adrserver.php';
this.QueryPars = 'com=countryquery&adr=country';
this.QueryMethod = 'get';
//functions
this.ListAnswerNow = CountryAnswer;
this.ListQueryNow = ListQuery;
}
function CountryAnswer(originalRequest)
{
//put returned XML in the textarea
var answer = originalRequest.responseText;
var FormID = this.CountryFormID;
// A FormID sajnos undefinied, ugyanúgy ahogy a CountryFormID.
// Amennyiben az objektum nevén keresztül hivatkozom rá, úgy megtalálja. pl.: proba.CountryFormID
alert(FormID);
$("assaas").options[0] = new Option("Új ország felvitel", "uj");
data = AnswerClear(answer);
MyOptions = data.split('**');
alert (MyOptions);
if (MyOptions == '') { MyOptions = ''; }
for (i = 0; i<MyOptions.length; i++)
{
MyOption = MyOptions[i].split('*-');
OptiV=MyOption[0];
OptiN=MyOption[1];
OptiI=MyOption[2];
OptiNumber = i+1;
$('assaas').options[OptiNumber]=new Option(OptiN+" ["+OptiI+"]",OptiV,"");
}
}
function ListQuery()
{
var url = this.QueryURL;
var myMethod = this.QueryMethod;
var myPars = this.QueryPars;
// Itt van értéke a this.CountryFormID -nek
alert(this.CountryFormID);
var myAnswer = this.ListAnswerNow;
var myAjax = new Ajax.Request( url, { method: myMethod, parameters: myPars, onComplete: myAnswer });
}
proba = new CountryList('assaas');
function haha()
{
proba.ListQueryNow();
}
(BUÉK)
bindaseventlistener
Ez teljesen normális dolog, és nincs köze a prototypehoz, illetve annyiban mégis, hogy van benne támogatás a probléma elkerülésére: bindaseventlistener metódus.
particletree.com/notebook/prototype-and-the-this-keyword/
(valamiért csak az eredeti verzió nem elérhető)
Üdv,
Felhő
Nem teljesen értem a választ
1) akarmi = CountryFormID.bindAsEventListener(CountryList);
2) akarmi = bindAsEventListener(CountryList.CountryFormID);
3) akarmi = this.bindAsEventListener(CountryList.CountryFormID);
Sajnos egyik sem hozott eredményt. Továbbra is csak így találom meg objektumom tulajdonságait:
akarmi = proba.CountryFormID;
Olyan mintha a szerver válaszát feldolgozó fügvény nem az objektumom részeként futna, hanem valami kívülálló fügvény lenne.
Azt írod, ez teljesen normális. Én még azt sem értem mi "normális". Csak annyit látok, hogy szeretném futtatni az objektumom egy funkcióját, és abbol futtatni egy másik funkcióját. Logikám szerint végig az objektumon belül maradok. Kérlek röviden vázold nekem, hogy ebben a hibajelenségben mi is a normális? (Ezt nem kötegedésből kérdezem. Tényleg érdekel, hogy milyen szabály vonatkozik ide, ami akadályozza a számomra optimális működést.)
Köszönöm válaszodat.
re
http://htmlinfo.polyhistor.hu/js13guide/obj.htm
majd a mester :) tollából
http://weblabor.hu/cikkek/oojsafelszinalatt
és utánna
már fogod érteni mit is csinálnak
ui: HOPPÁ frissült az angol doksi http://www.sergiopereira.com/articles/prototype.js.html
dec 31-en :) 1.5.0_rc2-re, hiphip :))
bind, bindAsEventListener paraméterátadásra is jó
nagyon megtudja könnyíteni az életet :)
http://toxin.hu/weblabor/bind/foo.html
üdv t
ui: közben leltem egy jó cikket
http://encytemedia.com/blog/articles/2006/12/4/avoiding-bloat-in-widgets
pr osztályok öröklődése témában