سؤال

أود أن أعلن جديد دوجو الدرجة وراثة من القائمة دوجو الدرجة ، ولكن مع اختيار بلدي من القيم الافتراضية للفصل خصائص.(لا يزال المستخدم تجاوز تلك القيم.)

أنا أعلن نسختي الخاصة من dijit.form.FilteringSelect مثل:

  • على hasDownArrow الخاصية الافتراضية false (بدلا من معيار true) ،
  • هناك إضافية ممكن الملكية storeUrl والذي يسمح لي توصيل FilteringSelect المقابلة QueryReadStore.

هنا هو ما فعلته دون النجاح:

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

أقول, وأنا أحاول أن تولد بشكل إلزامي في HTML مثل هذه النسخة my.FilteringSelect:

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

هذا الواقع خلق FilteringSelect مع المطلوب promptMessage (وهو ما يعني أن الفائقة هو الحصول على صحيح params) ، ولكن hasDownArrow هو true (على عكس الافتراضي mixin) ، store هو null (و الحرائق وحدة التقارير التي storeUrl هو "undefined").

ما الخطأ الذي فعلته ؟

هل كانت مفيدة؟

المحلول

عفوا!لقد كان حقا الأشياء على رؤوسهم.لقد وجدت الطريقة المناسبة حولها.الأعمال التالية:

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});
      }
   }
);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top