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.