【问题标题】:Change Value Displayed in v-slider and v-text-field based on a v-select option根据 v-select 选项更改 v-slider 和 v-text-field 中显示的值
【发布时间】:2018-05-04 15:30:15
【问题描述】:

我遇到了一个非常有趣的问题,我似乎无法解决问题。

我有一个包含多个<v-slider>s 和<v-text-field>s 的表单。对于对象的每个属性,都有一个滑块和文本字段,将其用作 v-model,如下所示:

<v-slider v-model='object1.value'></v-slider>
<v-text-field v-model='object1.value'></v-text-field>

问题是这些字段(因为它们是从数据库中检索出来的)会在几秒钟内出现,当输入更容易表示为小时或分钟的值时,这可能会给用户带来负担。我有一个&lt;v-select&gt;,它允许用户选择小时或分钟,但是我不知道如何更改滑块和文本字段的值以将值显示为小时。

例子:

  1. 滑块的值为 3600(以秒为单位)。
  2. 用户从下拉列表中选择hours
  3. 3600 应更改为 1

我尝试在下拉列表中设置一个观察者,在对提供的值进行数学运算时,它始终返回NaN

有没有人有办法解决这个问题?

编辑: CodePen

编辑 2: 因此,似乎computed 属性可能是我正在寻找的,但是我一辈子都无法让它发挥作用。我可能只是将这些绑定到我的输入的值移动到其他变量并在表单提交时重新分配它们。

【问题讨论】:

  • 你有codepen或其他东西可以做吗?
  • @Toodoo 给我一分钟,我可以拍一个给你看,让你知道我想做什么
  • @Toodoo 在这里:codepen.io/aturingmachine/pen/Gdvwvz 如果您需要其他任何东西,请告诉我!提前谢谢你
  • 编辑您的问题以添加它;)
  • 我设法做了一些事情,但不是我想的全部:codepen.io/anon/pen/WJELeG 它根据选择值打印正确的值,但滑块仍在分钟内(绑定在 obj 上)

标签: javascript vue.js vuetify.js


【解决方案1】:

您可以使用 computed property 根据所选时间单位缩放原始值。 根据您原来的笔,您需要更改以下内容:

在选择中,添加时间单位的秒数作为值 - 这是您的转换因子

<v-select 
  :items=[
    {text: 'Seconds', value: 1},
    {text: 'Minutes', value: 60},
    {text: 'Hours', value: 3600}
  ]" 
  v-model="conversionFactor"
/>

计算属性除以获取时的转换因子并乘以写入时的因子:

computed: {
  convertedValue: {
    get: function() {
      return this.exObj.value / this.conversionFactor
    },
    set: function(newValue) {
      this.exObj.value = newValue * this.conversionFactor
    }
  }
}

此外,您可能还希望根据所选转化来缩放滑块最大值:

<v-slider 
  v-model="convertedValue" thumb-label
  :max='9999 / conversionFactor'
  :min='0' 
/>

这是working penhttps://codepen.io/wwerner/pen/MXbyjL

【讨论】:

  • 我最终选择了一条不同的路线,这可能会或可能不会降低效率。我遇到的一个问题是页面上有多个输入,它们并不都使用相同的子单元,甚至可能没有子单元。然而,这个答案回答了我发布的问题!谢谢!
猜你喜欢
  • 2021-04-30
  • 1970-01-01
  • 2021-03-25
  • 2021-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多