既存の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" />
これは確かに目的のaを作成しFilteringSelect
ますpromptMessage
(これはスーパークラスが適切にパラメータを取得していることを意味します)が、 (私のデフォルトのミックスインとは異なり)hasDownArrow
is (そしてFirebugコンソールは " "であると報告します)です。true
store
null
storeUrl
undefined
私は何が間違っているのですか?