[英]VueJS sending v-model property from child to parent
Let's say I have a Vue component like this one:假设我有一个像这样的 Vue 组件:
Vue.component('child-comp',{
props:['name', 'val'],
data: function(){
return {
picked: ''
}
},
template: '<div><input type="radio" :name="name" :value="val" v-model="picked"><slot></slot></div>'
});
And The Parent vue instance:和父 vue 实例:
new Vue({
el: '#app',
data: {
message: 'Hello'
}
});
And in the HTML:在 HTML 中:
<div id="app">
<child-comp name="fruits" val="apple">Apple</child-comp>
<child-comp name="fruits" val="banana">Banana</child-comp>
<child-comp name="fruits" val="cherry">Cherry</child-comp>
<p>{{ picked }}</p> <!-- this throws an error -->
</div>
How can I pass the v-model property picked
from the child component to the root instance.如何将从子组件中
picked
的 v-model 属性传递给根实例。 Only way I know of is $emit
ting an event from the child component and later capturing the passed data in root instance.我知道的唯一方法是
$emit
来自子组件的事件,然后在根实例中捕获传递的数据。 But as you can see, to access a simple property, triggering an event is overkill.但正如您所见,要访问一个简单的属性,触发一个事件是多余的。 How can I access
{{ picked }}
within <p>{{ picked }}</p>
如何在
<p>{{ picked }}</p>
中访问{{ picked }}
If your child-comp
is an input component you could use two-way props.如果您的
child-comp
是一个输入组件,您可以使用双向道具。 These work similar to v-model
but you can use them with your custom components.这些工作类似于
v-model
,但您可以将它们与您的自定义组件一起使用。
<custom-input
:value="something"
@input="value => { something = value }">
</custom-input>
You can find out more about this here and there .你可以在这里和那里找到更多关于这个的信息。 See this thread also.
另请参阅此线程。 Good luck!
祝你好运!
That's easy:这很容易:
new Vue({
el: '#app',
data: {
message: 'Hello',
picked: 'apple'
}
});
And in child :在孩子中:
Vue.component('child-comp',{
props:['name'],
template: '<div><input type="radio" :name="name" v-model="picked"><slot></slot></div>'
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.