我有两个整型变量:
$globalData.y
被定义为在main.js
中可观察到的vue,以及App.vue
中定义的x
。
我在App.vue
中有一个滑块绑定到x
(即v-model="x"
),我希望$globalData.y
的值更改为滑块的输入值,但我得到了多个错误。
main.js:
...
Vue.prototype.$globalData = Vue.observable({
y: 0,
});
...
字符串
App.vue:
<template>
<div>
<h2>Value: {{ $globalData.y }}</h2>
<input type="range" min="0" max="60" value="30"
v-model="x" oninput="updateData(x)">
</div>
</template>
<script>
export default {
data () {
return {
x: 0
}
},
methods: {
updateData(x){
this.$globalData.y = x;
}
}
}
</script>
型
当我试图改变滑块的值时,我得到了一个updateData is not defined
错误。如果我试图直接通过oninput="this.$globalData.y = this.x"
更新滑块的值,我得到了一个Cannot set properties of undefined (setting 'y')
错误。
1条答案
按热度按时间flvlnr441#
表单元素上的
v-model
是@input
+:value
的简写(根据输入类型,受影响的 prop 可能会有所不同)。但想法是 * 你不能在同一个表单元素上使用两种模式 *。解决这个问题的一种方法是在
v-model
中直接使用$globalData.y
:字符串
如果你想让组件有一个
$globalData.y
的x
别名,你可以把它写成一个计算的getter/setter:型
但我认为这是无用的,因为你可以在任何你想使用
x
的地方使用$globalData.y
,对吗?旁注:
<input>
是一个自关闭标记。不关闭它(以/>
结尾)可能会导致它后面的内容出现意外的布局分析错误。请始终使用有效的标记。