Загрузить значения enum в хранилище dojo

1

У меня есть 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
                });

но когда я расширяю раскрывающийся список... он не расширяется без каких-либо ошибок в консоли... любая идея, что я сделал неправильно? Спасибо

Теги:
store
dojo
dijit.form

1 ответ

1

Вы выпадающее меню ничего не показывают, потому что данные не были массивом, а объектом 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>
  • 0
    @firstNamelastName это помогло?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню