У меня есть ENUM, как это
define({
DEFAULT:1,
DDL:2,
props:{
1:{name: 'Default', value:1, id:1},
2:{name: 'DDL', value:2, id:2}
}
});
и я хочу загрузить его в dijit/form/FilteringSelect
это мой код
var store = new Memory({
idProperty: "id",
data: type.props
});
var os = new ObjectStore({objectStore: store});
this.unitType = new Select({
name : 'name',
label : dojoConfig.i18n.unitType,
placeHolder: dojoConfig.i18n.unitType,
required: false,
store: os,
value: type.props[1].id,
searchAttr: 'name',
labelAttr: "name",
trim: true
});
но когда я расширяю раскрывающийся список... он не расширяется без каких-либо ошибок в консоли... любая идея, что я сделал неправильно? Спасибо
Вы выпадающее меню ничего не показывают, потому что данные не были массивом, а объектом js,
Доджо/хранилище/Память нуждается в массиве ana в качестве данных,
Чтобы исправить это, вы можете отредактировать свой объект, изменив объект на массив, или создайте и создайте объект из этого объекта и настройте его на свой выбор, а затем используйте Object.values(yourObject)
которые возвращают массив значений из вашего объекта.
См. Ниже Рабочий фрагмент:
require(["dijit/registry", "dijit/form/FilteringSelect", "dojo/store/Memory", "dojo/data/ObjectStore"],
function(registry, FilteringSelect, Memory, ObjectStore) {
var type = {
DEFAULT: 1,
DDL: 2,
props:{
1:{name: 'Default', value:1, id:1},
2:{name: 'DDL', value:2, id:2}
}
};
type.props = Object.values(type.props);
var store = new Memory({
idProperty: "id",
data: type.props
});
var os = new ObjectStore({
objectStore: store
});
new FilteringSelect({
name: 'name',
required: false,
store: os,
value: type.props[1].id,
searchAttr: 'name',
labelAttr: "name",
trim: true
}, "select");
});
<script>
dojoConfig = {
isDebug: true,
parseOnLoad: true,
};
</script>
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>
<link href="//ajax.googleapis.com/ajax/libs/dojo/1.10.0/dijit/themes/claro/claro.css" rel="stylesheet" />
<body class="claro">
<select id="select">
</select>
</body>