Je souhaite déclarer une nouvelle classe dojo héritant d'une classe dojo existante, mais avec mon propre choix de valeurs par défaut pour les propriétés de la classe. (L'utilisateur peut toujours remplacer ces valeurs.)dojo: héritage avec la valeur par défaut - le mixin ne se produit pas
Je déclare ma propre version du dijit.form.FilteringSelect
tel que:
- les
hasDownArrow
par défaut de propriété àfalse
(plutôt que letrue
standard) et - il y a une propriété supplémentaire possible
storeUrl
qui me permet de connecter leFilteringSelect
auQueryReadStore
correspondant.
Voici ce que je l'ai fait, sans succès:
dojo.provide("my.FilteringSelect");
dojo.require("dijit.form.FilteringSelect");
dojo.require("dojox.data.QueryReadStore");
dojo.declare(
"my.FilteringSelect",
[
dijit.form.FilteringSelect, /* base superclass */
{ hasDownArrow:false, storeUrl:"/" } /* mixin */
],
{
constructor: function(params, srcNodeRef){
console.debug("Constructing my.FilteringSelect with storeUrl "
+ this.storeUrl);
this.store = new dojox.data.QueryReadStore({url:this.storeUrl});
}
}
);
Say, je tente de générer déclarative dans la une telle version HTML de my.FilteringSelect
:
<input type="text" id="birthplace" name="birthplace"
promptMessage="Start typing, and choose among the suggestions"
storeUrl="/query/regions"
dojoType="my.FilteringSelect" />
Cela fait créer un FilteringSelect
avec le promptMessage
désiré (ce qui signifie que la superclasse reçoit correctement les paramètres), mais hasDownArrow
est true
(contrairement à mon défaut ms xin) et le store
est null
(et la console Firebug signale que storeUrl
est "undefined
").
Qu'est-ce que je fais mal?