<div id="app">
<input v-model="msg"/>
<p>{{ msg }}</p>
</div>
<script>
class A{
}
A.a = 1
new Vue({
el: '#app',
data: {
},
computed: {
msg: {
cache: false,
set: function(val){
A.a = val
},
get: function(){
return A.a
}
}
}
})
</script>
vue如何在v-model上使用getter setter?我尝试在 v-model 上使用 getter 和 setter,但没有用。
原文由 cyhone 发布,翻译遵循 CC BY-SA 4.0 许可协议
你的 getters 和 setters 都很好。 (在这个例子中它们不是绝对必要的,因为它们没有做任何修改用户输入的事情,但我认为这是为了你的问题的目的的简化。)
您的代码有两个不同的问题:
A.a
),所以框架不知道要观察它的变化。为了使框架对更改做出反应,您必须将变量
A
放在组件的data
块中(并且,如果您确实需要外部变量,请将更新后的值复制到其中使用 setter 函数)。