Vuetify中是否有特定的数字输入组件?

Tut*_*een 6 javascript css vue.js material-design vuetify.js

我已经在Element UI中看到了一个用于管理项目数量的组件,它在这里:

https://element.eleme.io/#/zh-CN/component/input-number

我想在Vuetify中使用类似的东西,但是在Material Design中找不到相似的组件甚至样式示例。最好的方法是什么?

小智 28

vuetify.js v2.2.22中转换<v-text-field>你需要写的数字v-model.number

<v-text-field 
v-model.number="foo" 
label="Number" 
append-outer-icon="add" 
@click:append-outer="increment" 
prepend-icon="remove" 
@click:prepend="decrement">
</v-text-field>
Run Code Online (Sandbox Code Playgroud)

type="number"被删除

  • 这有点误导。请参阅下面 UncertaintyP 的回答。`v-model.number` 来自 Vue 而不是 Vuetify。`type="number"` 来自 HTML,而不是 Vue 或 Vuetify。https://vuejs.org/v2/guide/forms.html#number (3认同)

Dig*_*ter 10

You could just make your own:

new Vue({ 
  el: '#app',
  data () {
     return {
       foo: 0
     }
  },
  methods: {
    increment () {
      this.foo = parseInt(this.foo,10) + 1
    },
    decrement () {
      this.foo = parseInt(this.foo,10) - 1
    }
  }
})
Run Code Online (Sandbox Code Playgroud)
<link href='https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons' rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/vuetify/dist/vuetify.min.css" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify/dist/vuetify.js"></script>

<div id="app">
    <v-app>
      <v-content>
        <v-container>
          <v-text-field v-model="foo" type="number" label="Number" append-outer-icon="add" @click:append-outer="increment" prepend-icon="remove" @click:prepend="decrement"></v-text-field>
        </v-container>
      </v-content>
    </v-app>
  </div>
Run Code Online (Sandbox Code Playgroud)


小智 10

数字输入的一些概念在这里混淆了。

  1. 我看不到type="number"在 2.2.22 https://github.com/vuetifyjs/vuetify/compare/v2.2.21...v2.2.22 中被删除我也看到它至少在 2.3 中被正确呈现。 10

  2. 属性 type="number" 的输入字段将根据浏览器、操作系统和区域设置进行不同的处理(例如,我仍然可以在 FF 但不是 Chrome 中输入自由文本)。通常,智能手机上的键盘布局会发生变化。

  3. v-model.number 纯粹是 Vue 的指令。如您所见,在内部,Vue 只是尝试使用 parseFloat 解析输入并在成功时使用它 - 否则它将是文本并在 Vue/JS 中作为字符串处理。https://vuejs.org/v2/guide/forms.html#number


yuk*_*say 8

就在这里:

<v-text-field
  v-model="numberValue"
  hide-details
  single-line
  type="number"
/>
Run Code Online (Sandbox Code Playgroud)

查看滑块组件文档以获取可用示例。

  • @Hexodus `v-model.number` 在这种情况下可以提供帮助 (4认同)
  • 好吧,它有点有效……只要人们记住您仍然可以手动输入非数字值。 (2认同)