В раскрывающемся списке ничего не отображается, потому что данные не массив, а объект js,
dojo / store / Memory в качестве данных требуется массив,
Таким образом, чтобы исправить это, вы можете отредактировать ваш объект, изменив объект в массив, или создать и объект из этого и установить в свой выбор, и это с помощью 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>