首页 > 解决方案 > vue - 文本字段绑定值不反映实际值

问题描述

我有一个简单的组件,它接受一个 value 道具并显示一个用于编辑它的文本字段。如果数字低于零,我希望它为零,如果文本从文本字段中删除,我希望它为零。在我的emit事件中,我可以看到我发出了正确的值,它只是没有反映在文本字段本身中。

我在这里有一个小提琴链接,但主要部分在下面列出:

<div id="app">
  <test-component v-model="foo"></test-component>
</div>
const TestComponent = {
    props: ['value'],
    template: `<div>{{value}}
    <input type="number" :value="value" @input="update($event.target.value)" />
  </div>`,
  methods: {
    update(value) {
      this.$emit("input", value <= 0 ? 0 : value)
    }
  }
}
new Vue({
  el: "#app",
  components: {
    'test-component': TestComponent
  },
  data: {
    foo: 1
  },

})

基本上发生的事情是我可以看到我的事件正在以值 0 发出,但是,您可以看到 {{value}} 反映了道具中的内容,但是本身的打印值textfield是空的(或更少大于零)

我在这里肯定有一些基本的误解,我认为 :value 应该反映现实,但显然不是。非常感谢任何帮助!

标签: vue.jsvuejs2vue-componentv-model

解决方案


每次更新 foo 更改密钥时,您都需要key在 then 上放置一个,这应该会触发重新渲染,这就是这里的问题。TestComponent


推荐阅读