【发布时间】: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" />
这确实会创建一个带有所需promptMessage 的FilteringSelect(这意味着超类正在正确获取参数),但hasDownArrow 是true(与我的默认混合)和store是null(并且Firebug 控制台报告storeUrl 是“undefined”)。
我做错了什么?
【问题讨论】:
标签: inheritance constructor dojo mixins declare