Vue $root、$parent、$refs

 

Vue处理边界root、parent、$refs

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

Vue 子组件能够经过 $root 属性访问父组件实例的属性和方法php

<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' } }) 

root 和parent 的区别

root 和parent 都可以实现访问父组件的属性和方法,二者的区别在于,若是存在多级子组件,经过parent 访问获得的是它最近一级的父组件,经过root 访问获得的是根父组件java

<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' } }) 

$refs 访问子组件实例

经过在子组件标签订义 ref 属性,在父组件中能够使用$refs 访问子组件实例app

<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() } } })
相关文章
相关标签/搜索