Vue实例属性

Vue实例属性Vue实例属性$props:使用这个属性可以接受上级组件向下传递的数据$options:获取vue实例属性,包含自定义属性$el:vue实例的根doom元素$children:获得vue实例的直接子组件$root:用获取当前组件树的根vue实例$attrs:可以获取组件的属性,但其获取的属性中不包含class、style以及被声明为props的属性。1.$props首先做一个小案例: <divid=”app”> <p>vm.$props<

Vue实例属性

  1. $props:使用这个属性可以接受上级组件向下传递的数据
  2. $options:获取vue实例属性,包含自定义属性
  3. $el:vue实例的根doom元素
  4. $children:获得vue实例的直接子组件
  5. $root:用获取当前组件树的根vue实例
  6. $attrs:可以获取组件的属性,但其获取的属性中不包含class、style以及被声明为props的属性。

1.$props

首先做一个小案例:

		<div id="app">
		    <p>vm.$props <small>接收上级组件向下传递的数据</small></p>
		    <my-component :txt="msg" name="aaa"></my-component>
		</div>
		<script>
			Vue.component("my-component",{ 
   
				template:`<p @click="fun">传过来的数据:{ 
    {txt}}</p>`,
				props:["txt","name"],
				methods:{ 
   
					fun(){ 
   
						console.log(this.$props);
					}
				}
			});
			let vm=new Vue({ 
   
				el:"#app",
				data:{ 
   
					msg:"我是要传过去的数据"
				}
			});
		</script>

当点击穿过来的数据时$props显示的是:
propskeyi

2.$options

Vue实例初始化时,除了传入指定的属性外,还可以传入自定义属性。自定义的属性可以是数组、对象、函数等,通过Vm.$options来获取。
案例:
在这里插入图片描述
实现代码:

		<div id="app">
			<p>$options <small>获取vue实例属性,包含自定义属性</small></p>
			<button type="button" @click="show">查看</button>
			{ 
   { 
   mydata}}
		</div>
		<script type="text/javascript">
			let vm = new Vue({ 
   
				el:"#app",
				data:{ 
   
					msg:"aaa"
				},
				cust:"我是自定义属性",
				methods:{ 
   
					show(){ 
   
						console.log(this.$options)
					}
				},
				created(){ 
   
					this.mydata = this.$options.cust;//this.$opeions.cust获得自定义属性cust的数据
				}
			})
		</script>

3.$el

$el用来访问vm实例使用的根DOM元素
查看子组件:
在这里插入图片描述
实现代码:

		<div id="app">
			<!-- $el可以查到这个div的所有内容 -->
			<p>vm.$el<small>vue实例的根doom元素</small></p>
			<button @click="watch">查看</button>
		</div>
		<script type="text/javascript">
			let vm = new Vue({ 
   
				el:"#app",
				methods:{ 
   
					watch(){ 
   
						console.log(this.$el)
					}
				}
			})
		</script>

替换:当点击替换按钮,当前根dom元素中的内容被替换成一句话“我是替换后的内容”。如下:在这里插入图片描述
实现代码:

		<div id="app">
			<!-- $el可以查到这个div的所有内容 -->
			<p>vm.$el<small>vue实例的根doom元素</small></p>
			<button @click="watch">查看</button>
			<button @click="change">替换</button>
			<!-- 点击替换按钮,当前根dom元素中的内容被替换成一句话“我是替换后的内容” -->
		</div>
		<script type="text/javascript">
			let vm = new Vue({ 
   
				el:"#app",
				methods:{ 
   
					watch(){ 
   
						console.log(this.$el)
					},
					change(){ 
   
						this.$el.innerHTML="<h1>我是替换后的内容</h1>"
					}
				}
			})
		</script>

4.$children

获得vue实例的直接子组件
例:
在这里插入图片描述
实现代码:

		<div id="app">
			<p>vm.$children <small>当前实例的直接子组件,不保证顺序,也不是响应式的</small></p>
			<button type="button" @click="show">查看子组件</button>
			<cpn></cpn>
		</div>
		<script type="text/javascript">
			 Vue.component("cpn",{ 
   
			        template:`<div>我是子组件 <cpn1></cpn1> </div>`
			    });
			    Vue.component("cpn1",{ 
   
			        template:`<div>我是第二个子组件</div>`
			    });
			let vm = new Vue({ 
   
				el:"#app",
				methods:{ 
   
					show(){ 
   
						console.log(this.$children)
					}
				}
			})
			
		</script>

通过观察控制台效果,通过this.$children可以得到当前实例所有的直接子组件cpn不能得到cpn1,
特点:不保证顺序
需要说明:定义好的组件,必须在使用之后才能得到

5.$root

用来获取当前组件树的根Vue实例,如果当前实例没有父实例,则获取到的是该实例本身
例:
在这里插入图片描述
实现代码:

<div id="app">
			<p>vm.$root<small>用获取当前组件树的根vue实例</small></p>
			<my-cpn></my-cpn>
		</div>
		<script type="text/javascript">
			Vue.component("my-cpn",{ 
   
				template:` <button type="button" @click="show">按钮</button> `,
				methods:{ 
   
					show(){ 
   
						console.log(this.$root)
						console.log(this.$root === vm.$root)
					}
				}
			});
			// console.log(this.$root)查看当前组件的根vue实例
			let vm = new Vue({ 
   
				el:"#app",
			})
		</script>

可以看出this. r o o t 完 全 等 于 v m . root完全等于vm. rootvm.root

6.$attrs

可以获取组件的属性,但其获取的属性中不包含class、style以及被声明为props的属性。
例:
在这里插入图片描述
实现代码:

		<div id="app">
		    <my-cpn a="a" class="abc" id="dd" name="abc" :txt="msg"></my-cpn>
		</div>
		<script>
		    Vue.component("my-cpn",{ 
   
		        template:`<div> <button @click="show">查看组件属性</button> <p>我是父组件传来的值:{ 
    {txt}}</p> </div>`,
		        props:["txt"],
		        methods:{ 
   
		            show(){ 
   
		                console.log(this.$attrs);
		            }
		        }
		
		    });
		
		    let vm=new Vue({ 
   
		        el:"#app",
		        data:{ 
   
		            msg:"我是父组件的数据"
		        }
		    });
		</script>

可看出获取的属性中不包含class、style以及被声明为props的属性。

今天的文章Vue实例属性分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/9157.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注