Vue第四天
父子组件间通信
ref 获取 DOM 元素 和 组件
路由
父组件向子组件传值
1.子组件使用父组件中的数据
- 初步尝试—(错误分析)
- 正确使用方法
<div id="app">
<!--父组件,可以在引用子组件的时候,通过 属性绑定(v-bind:) 的形式,把需要 传递给子组件 的数据,以属性绑定的形式,传递到子组件内部,供子组件使用-->
<com1 v-bind:parentmsg="msg"></com1>
</div>
<script>
let vm = new Vue({
el: '#app',
data: {
msg: '123 父组件中的数据'
},
methods: {
},
components: {
com1: {
//props中的数据,都是只读的,无法重新赋值。
props: ['parentmsg'],//把父组件传递过来的 parentmsg 属性,先在 props 数组中,先定义一下,这样才能使用这个数据
template: '<h1>这是子组件---{
{parentmsg}}</h1>'
}
}
})
</script>
2.子组件使用父组件中的方法
<div id="app">
<com1 @func="show"></com1>
</div>
<template id="tmp1">
<div>
<h1>这是子组件</h1>
<button @click="myclick">这是子组件的中的按钮</button>
</div>
</template>
<script>
let com2 = {
template: '#tmp1',
methods: {
myclick() {
// emit 英文原意:是触发,调用,发射的意思
this.$emit('func')
}
}
}
let vm = new Vue({
el: '#app',
data: {
},
methods: {
show() {
console.log('调用父组件身上的show方法')
}
},
components: {
com1: com2
}
})
</script>
子组件向父组件传值
- 设置参数( 供子组件传递参数 )
- 列举 list 数据对象 说明
<div id="app">
<com1 @func="show"></com1>
</div>
<template id="tmp1">
<div>
<h1>这是子组件</h1>
<button @click="myclick">这是子组件的中的按钮</button>
</div>
</template>
<script>
let com2 = {
template: '#tmp1',
data () {
return {
list: [{
'id': '1', 'age': '18'}]
}
},
methods: {
myclick() {
// emit 英文原意:是触发,调用,发射的意思
this.$emit('func', this.list)
}
}
}
let vm = new Vue({
el: '#app',
data: {
},
methods: {
show(data)