Vue.js Vuejs使用插槽在父子组件之间传递数据
我可以创建这样的父子组件:Vue.js Vuejs使用插槽在父子组件之间传递数据,vue.js,vuejs2,Vue.js,Vuejs2,我可以创建这样的父子组件: <my-parent :value="ABC"></my-parent> Vue.component('my-parent', { template: '<div><span>Hello</span><slot :value="value"></slot></div>', data: function () { return {
<my-parent :value="ABC"></my-parent>
Vue.component('my-parent', {
template: '<div><span>Hello</span><slot :value="value"></slot></div>',
data: function () {
return {
value: ""
}
},
});
子组件
Vue.component('my-child', {
template: '<div>{{value}}</div>',
props: {
value: {
type: String,
default: ""
}
}
});
Vue.component('my-child'{
模板:“{value}}”,
道具:{
价值:{
类型:字符串,
默认值:“
}
}
});
父组件
Vue.component('my-child', {
template: '<div>{{value}}</div>',
props: {
value: {
type: String,
default: ""
}
}
});
请注意“我的孩子”组件在父模板中的引用方式
Vue.component('my-parent', {
template: '<div><span>Hello</span><my-child :value="value"></my-child></div>',
data: function () {
return {
value: ""
}
},
});
Vue.component('my-parent'{
模板:“你好”,
数据:函数(){
返回{
值:“”
}
},
});
然后我可以这样使用它:
<my-parent :value="ABC"></my-parent>
Vue.component('my-parent', {
template: '<div><span>Hello</span><slot :value="value"></slot></div>',
data: function () {
return {
value: ""
}
},
});
值“ABC”正确传递给子级,并按预期显示
然而,我需要做的是如下(基本上,我已经将my child从父模板中拉出来并返回到HTML中。我将有许多不同的my child组件,可以在我的父模板中使用):
我将父组件更改为使用如下插槽:
<my-parent :value="ABC"></my-parent>
Vue.component('my-parent', {
template: '<div><span>Hello</span><slot :value="value"></slot></div>',
data: function () {
return {
value: ""
}
},
});
Vue.component('my-parent'{
模板:“你好”,
数据:函数(){
返回{
值:“”
}
},
});
my child模板正在拾取和显示,但ABC值没有像我预期的那样传递到my child组件
如果我这样做:
<my-parent :value="ABC">
<my-child :value="value"></my-child>
</my-parent>
my child绑定实际上是在根实例上查找“value”,而不是从父实例上查找,这不是我想要的
如何通过插槽向下传递数据 要将数据从组件传递到其插槽中的内容,您需要使用 在父零部件模板中,将要传递给子零部件的特性添加到插槽中:
<div><span>Hello</span><slot :value="value"></slot></div>
这是一个可行的方法。这是我阅读文档的方式,但它不起作用。我意识到我仍然只在vue 2.0上,这是2.1的功能,所以我升级到了最新版本,但仍然无法工作。它不是在抱怨不存在的房产或其他东西。这一切似乎都编译和运行没有错误。它只是没有设置子组件中的值。@Jeff SoftwareResults您必须提供更多信息。这就是作用域插槽的工作方式。在这里创建了一个提琴我想要的是,当我在顶级vue中更改值时,它应该会通过两个组件向下移动。但目前我甚至没有运气让它向下移动到父级:-(在数据和属性的使用之间变得非常混乱。这里有新的fiddle:这一个使用道具而不是数据(做了一些阅读:-)。根据我上面的问题,值会传递给父级,但不会传递给子级。谢谢!!我尝试了各种类似的组合,但一定没有想到:-(如果您想更新您的答案,我会将其标记为正确。再次感谢。