【问题标题】:dojo: inheritance with default value - the mixin doesn't happendojo:具有默认值的继承 - 不会发生 mixin
【发布时间】:2010-10-05 08:01:54
【问题描述】:

我希望声明一个从现有 dojo 类继承的新 dojo 类,但我自己选择了类属性的默认值。 (用户仍然可以覆盖这些值。)

我声明我自己的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" />

这确实会创建一个带有所需promptMessageFilteringSelect(这意味着超类正在正确获取参数),但hasDownArrowtrue(与我的默认混合)和storenull(并且Firebug 控制台报告storeUrl 是“undefined”)。

我做错了什么?

【问题讨论】:

    标签: inheritance constructor dojo mixins declare


    【解决方案1】:

    哎呀!我真的有事情在他们头上。我找到了正确的方法。以下作品:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-09
      • 2019-09-01
      • 1970-01-01
      • 2021-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多