当前位置:   article > 正文

Vue第四天(父子组件间通信 ref 获取 DOM 元素和组件 路由)_子组件拿到父组件的某个dom节点 vue

子组件拿到父组件的某个dom节点 vue

Vue第四天

父子组件间通信

ref 获取 DOM 元素 和 组件

路由

父组件向子组件传值

1.子组件使用父组件中的数据
  • 初步尝试—(错误分析)

mark

  • 正确使用方法
<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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

mark

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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

mark

子组件向父组件传值

  • 设置参数( 供子组件传递参数 )

mark

mark

  • 列举 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) 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/133928
推荐阅读
相关标签
  

闽ICP备14008679号