了解 vue.js 中的道具
Understanding props in vue.js
我正在阅读学习指南 vue.js,进入道具部分,运行 进入一个问题。
我知道子组件有独立的作用域,我们使用 props 配置将数据从父组件传递到它,但是当我尝试它时我无法让它工作。
我有 the example I'm working on up on js fiddle:
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>'
}
}
});
当我运行以上代码时,我的输出只有:
, Chris
子组件的本地数据呈现良好,但传入的父组件数据要么未通过,要么未正确呈现。
我在 javascript 控制台中没有看到任何错误,模板正在呈现。
我是不是误解了应该如何传递道具?
您必须像这样将值绑定到组件属性:
<person-container v-bind:greeting="greeting"></person-container>
Jsfiddle
https://jsfiddle.net/y8b6xr67/
在这里回答:
我已经更新了你的 fiddle
<person-container :greeting="greeting"></person-container>
您需要在 html 组件上将属性从父级传递给子级。
您也可以将任何字符串传递给 "greeting",只需像普通 html 属性一样设置它,而不使用 v-bind 指令。
<person-container greeting="hi"></person-container>
也可以。请注意,您通过这种方式传递的任何内容都将被解释为纯字符串。
<person-container greeting="2 + 2"></person-container>
将得出“2 + 2,克里斯”。
更多用户指南:https://vuejs.org/v2/guide/components.html#Props
我正在阅读学习指南 vue.js,进入道具部分,运行 进入一个问题。
我知道子组件有独立的作用域,我们使用 props 配置将数据从父组件传递到它,但是当我尝试它时我无法让它工作。
我有 the example I'm working on up on js fiddle:
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>'
}
}
});
当我运行以上代码时,我的输出只有:
, Chris
子组件的本地数据呈现良好,但传入的父组件数据要么未通过,要么未正确呈现。
我在 javascript 控制台中没有看到任何错误,模板正在呈现。
我是不是误解了应该如何传递道具?
您必须像这样将值绑定到组件属性:
<person-container v-bind:greeting="greeting"></person-container>
Jsfiddle https://jsfiddle.net/y8b6xr67/
在这里回答:
我已经更新了你的 fiddle
<person-container :greeting="greeting"></person-container>
您需要在 html 组件上将属性从父级传递给子级。
您也可以将任何字符串传递给 "greeting",只需像普通 html 属性一样设置它,而不使用 v-bind 指令。
<person-container greeting="hi"></person-container>
也可以。请注意,您通过这种方式传递的任何内容都将被解释为纯字符串。
<person-container greeting="2 + 2"></person-container>
将得出“2 + 2,克里斯”。
更多用户指南:https://vuejs.org/v2/guide/components.html#Props