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