v-nudge

简介

v-nudge 指令用于使用键盘方向键对值进行调整。

示例

0
点我,按左右方向键
点我,按上下方向键
<template>
<article>
  <div class="box value">
    {{ displayValue }}
  </div>
  <div
    v-nudge.x="{update: handleNudgeUpdate}"
    class="box"
    tabindex="-1"
  >
    点我,按<strong>左右</strong>方向键
  </div>
  <div
    v-nudge.y="{update: handleNudgeUpdate}"
    class="box"
    tabindex="-1"
  >
    点我,按<strong>上下</strong>方向键
  </div>
</article>
</template>

<script>
import { nudge } from 'veui'

export default {
  directives: {
    nudge
  },
  data () {
    return {
      value: 0
    }
  },
  computed: {
    displayValue () {
      return this.value.toFixed(1).replace('.0', '')
    }
  },
  methods: {
    handleNudgeUpdate (increase) {
      this.value += increase
    }
  }
}
</script>

<style lang="less" scoped>
article {
  display: flex;
}

.box {
  width: 200px;
  height: 50px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid #dbdbdb;
  background: #fff;
  margin-right: 40px;
  user-select: none;
  cursor: pointer;
  outline: none;
  transition: background-color 0.3s;
  line-height: 1;

  &:focus {
    background-color: #e7e7e7;
  }
}

.value {
  font-size: 1.5em;
}
</style>

API

绑定值

类型:function | Object

使用 function 类型则绑定值表示按下方向键后触发的回调函数。例如:

<div tabindex="-1" v-nudge="update"></div>

使用 Object 类型时绑定值可完整配置所有参数。例如:

<div tabindex="-1" v-nudge="{
  step: 5,
  axis: 'y',
  update: increase
}"></div>
参数类型默认值描述
axisstringy限制只能使用左右或上下方向键调整。取值为:xy
stepnumbernudge.step步进值。可进行全局配置
updatefunction(delta: number)function() {}值发生变化时触发,传入变化值。参数 delta 为计算后的数值变化量。

修饰符

对应 Object 类型绑定值中的 axis / step。例如:

<div tabindex="-1" v-nudge.x.2="{ update: delta => this.val += delta }"></div>
描述
x限制只能使用左右方向键调整。
y限制只能使用上下方向键调整。
step步进值,注意这里 step 是一个变量。

全局配置

配置项类型默认值描述
nudge.stepnumber1步进值。