demo.vue 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <template>
  2. <div class="demo">
  3. <h2>基本用法</h2>
  4. <nut-cell>
  5. <nut-inputnumber v-model="state.val1" />
  6. </nut-cell>
  7. <h2>步长设置</h2>
  8. <nut-cell>
  9. <nut-inputnumber v-model="state.val2" step="5" />
  10. </nut-cell>
  11. <h2>限制输入范围</h2>
  12. <nut-cell>
  13. <nut-inputnumber
  14. v-model="state.val3"
  15. @overlimit="overlimit"
  16. min="10"
  17. max="20"
  18. />
  19. </nut-cell>
  20. <h2>禁用操作</h2>
  21. <nut-cell>
  22. <nut-inputnumber v-model="state.val4" disabled />
  23. </nut-cell>
  24. <h2>只读禁用输入框</h2>
  25. <nut-cell>
  26. <nut-inputnumber v-model="state.val5" readonly />
  27. </nut-cell>
  28. <h2>支持小数</h2>
  29. <nut-cell>
  30. <nut-inputnumber
  31. v-model="state.val6"
  32. step="0.1"
  33. decimal-places="1"
  34. readonly
  35. />
  36. </nut-cell>
  37. <h2>支持异步修改</h2>
  38. <nut-cell>
  39. <nut-inputnumber :model-value="state.val8" @change="onChange" />
  40. </nut-cell>
  41. <h2>自定义按钮大小</h2>
  42. <nut-cell>
  43. <nut-inputnumber v-model="state.val7" button-size="30" input-width="50" />
  44. </nut-cell>
  45. </div>
  46. </template>
  47. <script lang="ts">
  48. import { reactive, getCurrentInstance } from 'vue';
  49. import { createComponent } from '@/utils/create';
  50. const { createDemo } = createComponent('inputnumber');
  51. export default createDemo({
  52. props: {},
  53. setup() {
  54. let { ctx } = getCurrentInstance();
  55. const state = reactive({
  56. val1: 1,
  57. val2: 0,
  58. val3: 10,
  59. val4: 0,
  60. val5: 1,
  61. val6: 5.5,
  62. val7: 1,
  63. val8: 1,
  64. step: 1.1
  65. });
  66. const onChange = (value: number) => {
  67. ctx.$toast.loading('异步演示 2 秒后更改');
  68. setTimeout(() => {
  69. state.val8 = value;
  70. ctx.$toast.hide();
  71. }, 2000);
  72. };
  73. const overlimit = () => {
  74. ctx.$toast.warn('超出限制事件触发');
  75. };
  76. return {
  77. state,
  78. onChange,
  79. blur,
  80. focus,
  81. overlimit
  82. };
  83. }
  84. });
  85. </script>
  86. <style lang="scss" scoped></style>