Envoyé par : cokinou
Date : 31/01/2007 13:56
Bonjour
J'ai un petit souci avec mon XBl. En fait, j'ai une propriété 'test' dans mon objet avec un setter et un getter.
<binding id="testbox"> <content> ... </content> <implementation> <property name="test"> <getter> return 'test'; </getter> <setter> alert('set test'); </setter> </property> ... </implementation> </binding>
Cela fonctionne bien (j'ai mon alert) lorsque j'écris dans mon javascript :
monObjetTestbox.test = 'tutu';
Par contre, rien ne fonctionne si je fais :
monObjetTestbox.setAttribute('test', 'tutu');
Mon problème est donc de détecter le setAttribute().
Quelqu'un à une idée ?
Merci d'avance
Envoyé par : hhf
Date : 31/01/2007 19:41
ceci est un vrai probleme, voici une solution maison :
<field name="_super"><![CDATA[ this.constructor.prototype; ]]></field>
<method name="setAttribute"> <parameter name="attr"/> <parameter name="val"/> <body><![CDATA[ if(typeof this[attr]!="undefined") this[attr]=val; else this._super.setAttribute.call(this, attr, val); ]]></body> </method>
Envoyé par : cokinou
Date : 01/02/2007 12:11
hhf a écrit:
ceci est un vrai probleme, voici une solution
maison :
<field name="_super"><![CDATA[
this.constructor.prototype;
]]></field>
<method name="setAttribute">
<parameter name="attr"/>
<parameter name="val"/>
<body><![CDATA[
if(typeof thisattr!="undefined") thisattr=val;
else this._super.setAttribute.call(this, attr, val);
]]></body>
</method>
Merci pour cette méthode.... j'avais essayé de redéfinir le setAttribute, mais je ne voyais pas comment récupérer le setAttribute d'origine... Grâce à ton _super c'est chose faite.
Je vais tout de suite mettre ca en place, merci beaucoup ;-)
Envoyé par : cokinou
Date : 01/02/2007 13:07
hhf a écrit:
ceci est un vrai probleme, voici une solution
maison :
Eh ben elle marche nickel ta solution maison
Merci bien, ca me resolve un problème qui m'embéter bien
Envoyé par : hhf
Date : 03/02/2007 01:36
Ha oui, petit truc que j'ai oublié de te dire, dans ta properties : tu dois faire comme ca :
<property name="test"> <setter><![CDATA[ // ici ton code metier this._super.setAttribute.call(this, "test", val); // et surtout pas this.setAttribute("test", val); // sinon c'est la boucle infini ]]></setter> <getter><![CDATA[ return this.getAttribute("test"); ]]></getter> </property>
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.