迭代mithril中的字符串列表并创建下拉列表

时间:2018-04-21 14:47:01

标签: javascript javascript-events frameworks mithril.js

我尝试搜索了很多互联网,但找不到简单问题的答案。我是mithril的新手(不知道为什么人们选择mithril作为项目:()。我想迭代一个字符串列表并在下拉框中使用其值来复选框。

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 个答案:

答案 0 :(得分:1)

view函数的开头,您定义了一个数组:

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

但是稍后在执行列表迭代的视图代码中,filterOptions应该是具有list属性的对象:

filterOptions.list.map(filter =>

那应该是filterOptions.map(filter =>

您的代码可能存在其他问题,但如果没有看到传递args的包含组件,则无法判断。你可能会发现问Mithril chatroom更有帮助,我自己和其他很多人可以讨论和讨论。协助处理棘手的情况。