如何使@key 选项与<v-list> 一起使用?

How to make @key options work with <v-list>?

@keypress@keydown@keyup 似乎不适用于 <v-list>

例如,它们可以与 <v-text-field> 等其他元素配合使用。

<template>
  <div id="my-list">
    <v-list dense @keypress.shift="test()">
      <v-list-item-group 
        v-model="selected"
        :multiple="multiple"
        color="red"
      >
        <v-list-item v-for="(item, i) in itemList" :key="i">
          <v-list-item-content>
            <v-list-item-title v-text="item.name"></v-list-item-title>
          </v-list-item-content>
        </v-list-item>
      </v-list-item-group>
    </v-list>
  </div>
</template>

<script>
export default {
  name: "MyList",
  components: {
    //
  },

  data: () => ({
    selected: [],
    multiple: false,
    itemList: [
      { name: "My Item 1" },
      { name: "My Item 2" },
      { name: "My Item 3" },
      { name: "My Item 4" },
      { name: "My Item 5" },
      { name: "My Item 6" },
    ]
  }),
  methods: {
    test() {
      console.log("TEST");
    }
  }
};
</script>

我试过 <v-list-item-group><v-list-item>,但也没用。

当您按 Shift 时,绝对没有任何反应 - 也没有错误。

看起来您需要使用 @key<X>.<Y>.native,其中 Xdownup(不确定 press)和 Y 是键盘按钮之一。

示例:@keydown.ctrl.native@keyup.alt.native@keyup.shift.native@keydown.shift.native

它适用于 <v-list><v-list-item-group><v-list-item>,但出于某种原因,您需要保持点击才能使其正常工作,即 pressing/releasing 一个在您仍然按住鼠标按钮的同时使用键盘按钮。

P.S。如果你想添加一个功能,例如,Ctrl+Click,你需要使用@click.ctrl="myFunction()"(只会在你松开鼠标按钮后调用 ) 或 @mousedown.ctrl="myFunction()"(无论您是否按住鼠标按钮,单击后都会立即调用)。