了解vue.js中的道具

我正在阅读vue.js的学习指南,进入有关道具的部分,然后遇到了一个问题。

我知道子组件具有隔离的作用域,并且我们使用props配置将数据从父组件传递到它,但是当我尝试一下时,我无法使其正常工作。

我有我正在研究js小提琴的例子

var vm = new Vue({
   el: '#app',
   // data from my parent that I want to pass to the child component
   data:{
       greeting: 'hi'
   },
   components:{
        'person-container':{

            // passing in the 'greeting' property from the parent to the child component
            props:['greeting'],

            // setting data locally for the child
            data: function (){
                return { name: 'Chris' };
            },

            // using both local and parent data in the child's template
            template: '<div> {{ greeting }}, {{ name }}</div>'
        }
   }
});

当我运行上面的代码时,我的输出仅为:

, 克里斯

子组件本地的数据可以很好地呈现,但是传入的父组件的数据要么没有通过,要么没有正确呈现。

我在JavaScript控制台中没有看到任何错误,并且模板正在呈现。

我是否误解了应该如何传递道具?

Itachi阳光2020/03/19 10:11:34

我已经更新了你的小提琴

<person-container :greeting="greeting"></person-container>

您需要在html组件上将道具从父项传递给子项。

米亚小小神乐2020/03/19 10:11:34

您也可以通过将其设置为普通的html属性,而不使用v-bind指令,将任何字符串传递给“ greeting”。

<person-container greeting="hi"></person-container>

也可以。请注意,以这种方式传递的任何内容都将被解释为纯字符串。

<person-container greeting="2 + 2"></person-container>

结果将是“ 2 + 2,克里斯”。
用户指南中的更多信息:https : //vuejs.org/v2/guide/components.html#Props

十三凯2020/03/19 10:11:34

您必须像这样将值绑定到组件属性:

<person-container v-bind:greeting="greeting"></person-container>

Jsfiddle https://jsfiddle.net/y8b6xr67/

在这里回答: Vue JS rc-1通过道具传递数据不起作用