zoukankan      html  css  js  c++  java
  • Vue处理边界之$root、$parent、$refs

    Vue处理边界之root、parent、$refs

    下面的功能都是有风险的,尽量避免使用

    1.Vue 子组件可以通过 $root 属性访问父组件实例的属性和方法

    <div id="app">
        <root-obj></root-obj>
    </div>
    Vue.component('root-obj', {
        data() {
            return {
    
            }
        },
        template: `<div>
                        <button @click='getRoot'>$Root</button>
                    </div>`,
        methods: {
            getRoot() {
                console.log(this)
                console.log(this.$root)
            }
        }
    })
    var app = new Vue({
        el: '#app',
        data: {
            msg: 'Root'
        }
    })
    

    2.root 和parent 的区别

    root 和parent 都能够实现访问父组件的属性和方法,两者的区别在于,如果存在多级子组件,通过parent 访问得到的是它最近一级的父组件,通过root 访问得到的是根父组件

    <div id="app">
        <root-obj></root-obj>
    </div>
    Vue.component('root-obj', {
        data() {
            return {
    
            }
        },
        template: `<div>
                        <button @click='getRoot'>子组件</button>
                        <child-component></child-component>
                    </div>`,
        methods: {
            getRoot() {
                console.log(this)
                console.log(this.$root)
                console.log(this.$parent)
            }
        }
    })
    Vue.component('child-component', {
        data() {
            return {
    
            }
        },
        template: `<div>
                    <button @click='getRoot'>子子组件</button>
                    </div>`,
        methods: {
            getRoot() {
                console.log(this)
                console.log(this.$root)
                console.log(this.$parent)
            }
        }
    })
    var app = new Vue({
        el: '#app',
        data: {
            msg: 'Root'
        }
    })
    

    3.$refs 访问子组件实例

    通过在子组件标签定义 ref 属性,在父组件中可以使用$refs 访问子组件实例

    <button @click='refView'>通过ref访问子组件</button>
    Vue.component('base-input', {
        data() {
            return {
                msg: 'base-input'
            }
        },
        template: `<input type='text'/>`
    })
    var app = new Vue({
        el: '#app',
        data: {
            msg: 'Root'
        },
        methods: {
            refView() {
                console.log(this.$refs.baseInput)
                this.$refs.baseInput.$el.focus()
            }
        }
    })
    

    原文:https://www.jianshu.com/p/2993c2cd6d68  

  • 相关阅读:
    Kmp 加深理解 之 poj 3461
    Kmp 模板 之 hdu 1711 Number Sequence
    最大连续子序列和(经典DP) 之 hdu 1231 最大连续子序列
    数学 之 hdu 4710 Balls Rearrangement
    01背包变形 之 hdu 2126 Buy the souvenirs
    逆序数 之 hdu 1394 Minimum Inversion Number
    根据进程文件id查看所有进程信息
    N皇后问题
    17. 电话号码的字母组合
    697. 数组的度
  • 原文地址:https://www.cnblogs.com/robinunix/p/10876641.html
Copyright © 2011-2022 走看看