Vuejs2 对具有计算属性值的输入使用@input或@change

Vuejs2 对具有计算属性值的输入使用@input或@change,vuejs2,vue-component,Vuejs2,Vue Component,我正在尝试设置一个组件,该组件通过v型模型将计算属性传递回父级。 下面的文档使用输入的直接值而不是计算属性来解释这一点 到目前为止,我已经按照文档实现了基本功能,但现在我想将向父级发送事件/发送数据的输入值设置为计算属性的值。我可以将该值设置为computed属性,这没有问题,但该事件从未触发(查看vue开发工具) 下面的工作原理是,使用输入中键入的内容发出事件,并更新父级上的相关数据 <input type="text" v-bind:value="value" v-on:change=

我正在尝试设置一个组件,该组件通过v型模型将计算属性传递回父级。
下面的文档使用输入的直接值而不是计算属性来解释这一点

到目前为止,我已经按照文档实现了基本功能,但现在我想将向父级发送事件/发送数据的输入值设置为计算属性的值。我可以将该值设置为computed属性,这没有问题,但该事件从未触发(查看vue开发工具)

下面的工作原理是,使用输入中键入的内容发出事件,并更新父级上的相关数据

<input type="text" v-bind:value="value" v-on:change="$emit('input', $event.target.value)">

//parent call to component
<time-picker v-model="parentData"></time-picker>

//对组件的父调用
但是,如果我这样设置,并通过更改其他一些输入来更改computedProp,则不会触发任何事件,尽管我看到了输入更改的值。(我还尝试调用自定义方法而不是发出事件,但该方法也不运行)


我也尝试过使用v-model而不是v-bind:value,但仍然没有事件

<input type="text" v-model="computedProp" v-on:change="$emit('input', $event.target.value)">

但是,如果我直接在具有
v-bind:value=“computedProp”
的输入中键入,则会发出一个事件(尽管没有正确的数据)

这使我怀疑@input和@change在计算属性更新时没有触发,即使这会导致所述输入的值发生变化。我是否应该使用@change或@input来监视计算属性

理想情况下,我不希望必须在子级中发出事件并手动捕获它并在父级中分配数据,因为组件将在同一父级中多次使用,并且直接在每个实例上使用v-model将更加方便

或者,我是不是完全找错了树,有没有其他/更好的方法在调用组件时将计算属性传递给指定的v模型


非常感谢:)

input
change
事件监听器由用户在输入时发出。以编程方式更改值不会触发事件

有一种方法可以解决这个问题。但我想建议你改用。它更干净、更容易

就这么简单

  watch: {
    computedProp(newValue) {
      this.$emit("input", newValue);
    }
  }

这样做的目的是,Vue将监视
computedProp
的值,以便每次其值更改时,
this.$emit(“输入”,newValue)将被执行。这就是您想要的。

input
change
当在input上键入时,用户将发出事件侦听器。以编程方式更改值不会触发事件

有一种方法可以解决这个问题。但我想建议你改用。它更干净、更容易

就这么简单

  watch: {
    computedProp(newValue) {
      this.$emit("input", newValue);
    }
  }
这样做的目的是,Vue将监视
computedProp
的值,以便每次其值更改时,
this.$emit(“输入”,newValue)将被执行。这就是你想要的