Я хочу объявить новый класс 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" />
Это действительно создаст FilteringSelect
с желаемым promptMessage
(что означает, что суперкласс правильно получает параметры), но hasDownArrow
равно true
(в отличие от моего стандартного миксина) и store
равен null
(и консоль Firebug сообщает, что storeUrl
равен "undefined
").
Что я делаю не так?