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:这一个使用道具而不是数据(做了一些阅读:-)。根据我上面的问题,值会传递给父级,但不会传递给子级。谢谢!!我尝试了各种类似的组合,但一定没有想到:-(如果您想更新您的答案,我会将其标记为正确。再次感谢。