Переберите список строк в мифриле и создайте выпадающий список

Я пробовал много искать в интернете, но не смог найти ответ на простой вопрос. Я очень плохо знаком с мифрилом (не знаю, почему люди выбрали мифрил для проекта:(). Я хочу перебрать список строк и использовать его значение в раскрывающемся списке с флажком.

const DefaultListView = {
view(ctrl, args) {
const parentCtrl = args.parentCtrl;
const attr = args.attr;
const cssClass = args.cssClass;
const filterOptions = ['Pending', 'Paid', 'Rejected'];
// as of now, all are isMultipleSelection filter
const selectedValue = 
parentCtrl.filterModel.getSelectedFilterValue(attr);

function isOptionSelected(value) {
  return selectedValue.indexOf(value) > -1;
}

return m('.filter-dialog__default-attr-listing', {
  class: cssClass
}, [
  m('.attributes', {
    onscroll: () => {
      m.redraw(true);
    }
  }, [
    filterOptions.list.map(filter => [
      m('.dropdown-item', {
        onclick() {
          // Todo: Add click metrics.
          // To be done at time of backend integration.
          document.body.click();
        }
      }, [
        m('input.form-check-input', {
          type: 'checkbox',
          checked: isOptionSelected(filter)
        }),
        m('.dropdown-text', 'Pending')
      ])
    ])
  ])
]);

}};

Точно сказать не могу. Как это сделать. Это то, что я пробовал до сих пор, но не повезло. Может ли кто-нибудь помочь мне в этом?

1 ответ

В начале view Функция, которую вы определяете массив:

const filterOptions = ['Pending', 'Paid', 'Rejected'];

Но позже в коде представления, где вы выполняете итерацию списка, filterOptions как ожидается, будет объектом с list имущество:

filterOptions.list.map(filter =>

Которые должны быть filterOptions.map(filter =>,

Могут быть другие проблемы с вашим кодом, но невозможно сказать, не увидев содержащий компонент, который передает args, Возможно, вам будет полезно спросить в Мифриловом чате, где я и множество других людей можем обсудить и помочь в сложных ситуациях.

Другие вопросы по тегам