带有子元素的滚动祝福框

Scroll blessed box with child elements

我有一个加持的盒子scrollable: true

let outerBox = blessed.box({
  top: '0%',
  left: '0%',
  width: '0%+6',
  height: '100%',
  scrollable: true,
  tags: true,
  padding: 1,
  mouse: true,
  style: {
    fg: 'white',
    bg: 'black'
  }
});

里面有很多我想要点击的元素。

[array of many elements].forEach((elem, i) => {
  let innerBox = blessed.box({
    content: elem,
    "height": "0%+1",
    "top": "0%+"+i,
    style: {
      hover: {
        bg: "black",
        fg: "white"
      }
    }
  });
  innerBox.on("click", (data) => {
    console.log("clicked",guild)
  });
  outerBox.append(server);
});

但是,如果元素设置了 属性 样式或侦听单击事件处理程序,则在它们上滚动将不再滚动外框。我必须在框的最边缘滚动才能真正滚动。

这有效,但我无法检测到点击:

[array of many elements].forEach((elem, i) => {
  let innerBox = blessed.box({
    content: elem,
    "height": "0%+1",
    "top": "0%+"+i
  });
  outerBox.append(server);
});

如何使用鼠标滚轮滚动外框,同时仍然能够检测到对内部元素的点击?

我通过使用列表而不是装满盒子的盒子解决了这个问题。列表是可滚动的并且可以有可选择的元素。