Vue实例(包含$refs)

1、this
在option api上通过this即可访问Vue实例对象

2、$root
获取当前组件的根节点

3、$parent
获取当前组件的父组件(Vue3中已经被弃用)

4、$children
获取当前组件的子组件 获得一个数组(Vue3中已经被弃用)

5、$mount()
$mount(‘选择器’)与el相同都是挂载元素

var app=new Vue({
	data:{
	message:'Hello Vue!'
	}
}).$mount('#app)

6、$el
组件渲染的时候的根节点对象

7、$data
得到组件的data设置的内容

8、$attrs
可以读取所有除了在props当中声明的自定义属性以外传递的自定义属性的值

9、$emit
用于触发绑定的自定义事件

实例作用范围
vue会管理el选项命中元素及其内部的后代元素
el挂载可以使用css选择器,但是不能挂载在html和body上

$refs

  • 用于在vue中获取DOM元素或者组件引入
  • 每个vue的组件实例上,都包含一个$refs对象,里面存储着对应的DOM元素或组件的引用
  • 默认情况下,组件的$refs指向一个空对象
<!-- 处理边界问题:
              $refs
              $children
              $root
              $parent
   -->
<div id="app">
      <parent ref="a2"></parent>
      <!-- ref 使用在html元素上 那么 this.$refs 可以得到这个html的 element对象    -->
       <div ref="a1"> 456 </div>
       <div ref="a3" v-for="item of 5" :key="item"> {{ item }} </div>
      <button @click="fn1"> 我是app里面的按钮</button>
</div>


<script>
    Vue.component('cp1',{
        template:` <div>
                        我是cp1组件
                        <button @click="fn1">$parent</button>
                        <button @click="fn2">$root</button>
                   </div> `,
        methods:{
            fn1(){
                console.log(this.$parent)
                // 组件内部可以通过 this.$parent 访问父组件实例
                this.$parent.c  = '我是cp1cp1cp1cp1'
            },
            fn2(){
                console.log(this.$root)
            }
        }
    })
    Vue.component('parent',{
        template:` <div>
                        我是parent组件
                        {{ c }}
                        <cp1></cp1>
                        <cp1></cp1>
                        <cp1></cp1>
                        <button @click="fn1"> 我是parent组件的按钮</button>
                   </div> `,
        data(){
            return {
                c:'我是parent里面的文字内容'
            }
        },
        methods: {
            fn2(){
                this.c ='我是组件内fn2修改的内容'
            },
            fn1(){
                // 通过 this.$children 访问所有的子组件实例
                console.log(this.$children)
            }
        }
    })
    new Vue({
        el:'#app',
        methods:{
            fn1(){
                // console.log( this.$refs.a1 )
                console.log( this.$refs.a2 ) //输出为<div>456</div>  vue中获取节点
                //  如果ref是写在自定组件上
                // 那么可以通过this.$refs 来访问组件实例
                // 可以可以修改组件的状态或者调用组件的方法
                // this.$refs.a2.c = '我是在外面修改的内容'
                // this.$refs.a2.fn2()
                // 如果 refs声明在 html元素上面并且有 v-for
                // 那么通过 this.$refs可以得到对应的节点组成的数组
                // console.log(this.$refs.a3)
            }

        }
    })
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值