🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 一:访问根实例 `this.$root` 在每个`new Vue`实例的子组件中,其根实例可以通过`$root`属性进行访问。例如,在这个根实例中: ~~~ // Vue 根实例 new Vue({ data: { foo: 1 }, computed: { bar: function () { /* ... */ } }, methods: { baz: function () { /* ... */ } } }) ~~~ 所有的子组件都可以将这个实例作为一个全局 store 来访问或使用。 ~~~ // 获取根组件的数据 this.$root.foo // 写入根组件的数据 this.$root.foo = 2 // 访问根组件的计算属性 this.$root.bar // 调用根组件的方法 this.$root.baz() ~~~ ## 二:访问父组件实例 `this.$parent` ``` <google-map> <google-map-markers v-bind:places="iceCreamShops"></google-map-markers> </google-map> ``` 在`google-map-markers`组件中就可以使用`this.$parent`访问`google-map`组件。 但是当子组件很多的情况下 ,代码就很容易变得很长: var map = this.$parent.map || this.$parent.$parent.map ## 三:访问子组件实例 `ref`(类似Angular的模版引用变量) 可以通过`ref`特性为这个子组件赋予一个 ID 引用。例如: ``` <base-input ref="usernameInput"></base-input> ``` 现在在你已经定义了这个`ref`的组件里,就可以使用: ~~~ this.$refs.usernameInput //base-input组件的实例 ~~~