gpt4 book ai didi

javascript - 在 Vue 2 中更改时传递范围输入值

转载 作者:行者123 更新时间:2023-11-30 15:26:39 26 4
gpt4 key购买 nike

在 Vue 2 中:我有一个 App 组件,它有一个 Slider 组件:

App.vue

<template>
<div>
<Slider :foo="store.foo"></Slider>
</div>
</template>

<script>
import store from './components/store.js';
import Slider from './components/Slider.vue';

export default {
name: 'app',

components: { Slider },

data() {
return {
store: store
}
},

methods: {
changeFoo(foo) {
console.log('change!', foo);
},
},
}
</script>

Slider.vue

<template>
<div>
<input type="range" min="1" max="100" step="1" @change="changeFoo" />
</div>
</template>

<script>
export default {
props: ['foo'],
methods: {
changeFoo() {
this.$emit('changeFoo', foo);
}
}
}
</script>

问题是 slider 的值没有在 Slider.vueemit 语句中传递。我明白为什么 - 但我不确定如何解决它。我尝试这样做:

v-model="foo"

input 元素中,但是 Vue 给出警告,我不允许改变 props。

最佳答案

而不是使用 prop 为 slider 创建一个新的数据变量并在发射中传递这个变量,就像这样:

<template>
<div>
<input v-model="sliderVal" type="range" min="1" max="100" step="1" @change="changeFoo" />
</div>
</template>

<script>
export default {
props: ['foo'],
data: function() {
return {
sliderVal: ""
}
}
methods: {
changeFoo() {
this.$emit('changeFoo', this.sliderVal);
}
}
}
</script>

同样在 App.vue 中,你必须像这样列出这个发出的事件:

<template>
<div>
<Slider :foo="store.foo" @change-foo="changeFoo"></Slider>
</div>
</template>

关于javascript - 在 Vue 2 中更改时传递范围输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42860075/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com