Question

Je tiens à déclarer une nouvelle classe héritant de dojo d'une classe existante dojo, 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.)

Je déclare ma propre version du dijit.form.FilteringSelect tel que:

  • les paramètres par défaut de propriété hasDownArrow à false (plutôt que la norme true) et
  • il y a une propriété supplémentaire possible qui me permet storeUrl pour connecter le correspondant au FilteringSelect QueryReadStore.

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});
      }
   }
);

Dis, je tente de générer déclarative dans la une telle version HTML my.FilteringSelect:

<input type="text" id="birthplace" name="birthplace"
       promptMessage="Start typing, and choose among the suggestions"
       storeUrl="/query/regions"
       dojoType="my.FilteringSelect" />

Ce sera en effet créer un avec le désiré promptMessage store (ce qui signifie que la superclasse reçoit correctement les params), mais est null undefined (contrairement à mon mixin par défaut) et le <=> est <=> (et les rapports console Firebug qui est <=> "<=>").

Qu'est-ce que je fais mal?

Était-ce utile?

La solution

Oops! J'ai eu vraiment des choses sur leur tête. J'ai trouvé le bon sens. Les travaux suivants:

dojo.provide("my.FilteringSelect");
dojo.require("dijit.form.FilteringSelect");
dojo.require("dojox.data.QueryReadStore");
dojo.declare(
   "my.FilteringSelect",
   dijit.form.FilteringSelect,
   {
      hasDownArrow : false,
      storeUrl : "/",
      constructor: function(params, srcNodeRef){
         dojo.mixin(this, params);
         console.debug("Constructing my.FilteringSelect with storeUrl "
                        + this.storeUrl);
         this.store = new dojox.data.QueryReadStore({url:this.storeUrl});
      }
   }
);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top