Vue实例的常用属性 Vue实例常用方法
创始人
2024-05-30 11:42:10
0

vm.$ el和 vm.$ data

在new Vue()实例中经常设置el,data选项,data选项里面又可以定义很多属性(常称为数据属性),Vue提供了一些有用的实例属性与方法,它们都有前缀$,以便与用户定义的属性相区别。

使用Vue实例属性vm.$ el可以获取到Vue实例挂载的DOM元素,返回的是一个DOM对象,获取DOM元素后可以为它设置样式等。

使用 vm.$ data 可获取到Vue实例的data选项数据对象,返回的是一个对象。

{{msg}}

在这里插入图片描述

可以看到我们获取了两个属性,一个是这个DOM元素对象,另一个是Vue实例中的data对象

我们可以改变这个DOM元素的样式:

        vm.$el.style.color = "red"vm.$el.style.backgroundColor = "yellow"

在这里插入图片描述
提问:
上例中的vm可以改为this吗?
回答:
不可以,在new Vue()内部才可以使用this。



vm.$ options 和 vm.$refs

前面也学过如下选项的设置:el 、data 、methods 、computed 、watch、 钩子函数等。此外也可以自定义一些选项,如简单属性或办法,然后通过vm.$ options获取自定义选项。当然,vm.$ options也可以获取默认选项值,只不过el、data等有更加简单的获取方式。

Vue采用的是Virtual DOM(虚拟DOM树)的做法渲染页面,如果直接操作DOM,很容易产生实际网页与Vue产生的Virtual DOM 不同步的问题,这里就可以使用ref来获取页面的DOM元素。

vm.$ refs属性可以用来获取页面中所有具有ref属性的元素,返回的是DOM元素集合的对象。


{{msg}}

你好

这是我写的vue程序

这段代码通过vm.$ options 可以在外部访问到Vue实例中的methods属性

在这里插入图片描述
可以通过该语句执行Vue实例中的show方法
methods可省略

vm.$options.methods.show()

我们在打印以下vm.$ refs属性

console.log(vm.$refs)

在这里插入图片描述

发现获取到了DOM元素。

我们也可以更改DOM元素内容的样式,但用的是我们自己在元素标签内自定义的属性,

vm.$refs.hello.style.color = "yellow"

在这里插入图片描述



Vue实例常用方法

与Vue实例生命周期相关的方法

1、vm.$ mount()
vm.$ mount()用来实现手动挂载vm实例到某个DOM元素上。

{{msg}}

上述代码也可以写成这样

{{msg}}

2、vm.$ nextTick()

vm.$ nextTick(callback)在DOM元素更新完成之后再执行此回调函数,一般是在修改数据之后使用该方法,以便获得更新后的DOM元素。

{{msg}}

标题:{{name}}

运行之后:
在这里插入图片描述
在这里插入图片描述
我们通过vm属性尝试改变张三

vm.name = "李四"

在这里插入图片描述
在这里插入图片描述
可以看到页面中的李四被渲染上去了,但是vm.$ refs.title.textContent属性的值依然是张三。

这是因为DOM还没更新完成。Vue实现响应式并不是数据发生改变之后DOM立即发生变化,需要按照一定的策略进行DOM更新,会需要一定的时间,而执行完vm.name = “李四”,之后立即执行console.log(vm.$ refs.title)代码,这个执行速度很快,比DOM更新要快,即下面语句先执行了,然后才更新的DOM,所以控制台显示的还是未更新前的。

那么如何做可以让 console.log(vm.$ refs.title.textContent)在DOM更新完成之后再执行呢?
使用vm.$ nextTick(callback)方法。该方法里面有一个回调函数,这个回调函数会等到DOM更新之后再执行。

    
{{msg}}

标题:{{name}}

在这里插入图片描述

这次输出的值变为李四了。

为对象添加和删除属性的方法

  • 1、vm.$ set()

vm.$ set(object,key,value)的作用是为对象添加属性key,并给定属性值value。

 var vm = new Vue({el: "#app",data: {user: {id: 1001,name: "jack"}}})

下面更新新属性和添加属性

    

{{user.name}}

{{user.age}}

在这里插入图片描述
点击修改属性

在这里插入图片描述
点击添加属性:
在这里插入图片描述
输出的user对象多了一个age属性 值为我们设置的19

在这里插入图片描述

可以页面中并没有渲染出来
也就是说使用这种方式添加属性并不是响应式的,可以使用vm.$ set方法实现响应,代码如下:

vm.$set(this.user,"age","19")
        var vm = new Vue({el: "#app",data: {user: {id: 1001,name: "jack"}},methods: {update() {this.user.name = "xiaofu"},add() {this.$set(this.user, "age", 19)console.log(this.user)}}})

在这里插入图片描述

成功渲染

注意:
这里的vm.$ set 中的vm可以换成this,写在new Vue()内部即可。

另外,vm.$ set是全局Vue.set 的别名,即可以用Vue.set来实现。

  • 2、vm.$ delete()

vm.$ delete(object,key)的作用是删除object对象的属性的key。

    

{{user.name}}

{{user.age}}

在这里插入图片描述

点击删除属性:
在这里插入图片描述
19不见了,我们看看this.user

在这里插入图片描述
age属性被删除了。

相关内容

热门资讯

关于一个童话 关于一个童话这个童话叫"田螺姑娘"那个公主?她不是公主~是个田螺精~但是后来他们一样过得很幸福田螺姑...
办理遗产买卖房产时产生欠条有法... 办理遗产买卖房产时产生欠条有法律效应吗?请详细描述,我们好准确回答.楼主所问的问题太简单,建议具体叙...
昆明好耍的地方 昆明好耍的地方1、大渔公园大渔公园位于昆明市呈贡县渔浦路怡和小区北,是集娱乐休闲、旅游度假为一体的好...
宋末词四大家 宋末词四大家只说名字周邦彦辛弃疾王沂孙吴文英张炎、王沂孙、蒋捷、周密宋词四大家是周邦彦、辛弃疾、王沂...
求:电影《布达佩斯之恋》里面钢... 求:电影《布达佩斯之恋》里面钢琴家安德拉许去餐馆应聘时弹的钢琴曲叫什么?不是那个黑色星期天!真是太好...
与张柏芝频传恋情,吴建豪和张柏... 与张柏芝频传恋情,吴建豪和张柏芝是否真的恋爱了?他们是真的没有恋爱,因为张柏芝还有谢霆锋的几个孩子,...
极品都市小说求推荐 百万字以上... 极品都市小说求推荐 百万字以上最好最强弃少,这个比较好看
什么是“状元、榜眼、探花”是何... 什么是“状元、榜眼、探花”是何典故?人文常识:古代科举考试中的第三名怎么称呼?状元、榜眼还是探花状元...
网上不是说冥王星在2010年被... 网上不是说冥王星在2010年被重新归为九大行星之列了吗?太阳系八大行星,不包括冥王星,如果冥王星算进...
韩版恶作剧之吻其他演员 韩版恶作剧之吻其他演员貌似确定了,是金贤重朴宝英男主是金贤重 女主的话 朴宝英可能性更大一些...
约会大作战第一季,第二季分别有... 约会大作战第一季,第二季分别有多少集第一季12急 两集ova 一集剧场版 第二季10集第一集十二集,...
关于母子间误会的故事 关于母子间误会的故事急求一个故事,关于母亲为孩子无悔付出,却在不经意间伤害了孩子,导致孩子误会了母亲...
一部电视剧是关于选美的几个女孩... 一部电视剧是关于选美的几个女孩子的,香港的,片子很老了,忘记叫什么名字了,诸位可否帮帮忙啊?香港小姐...
你听过最好的情话有哪些? 你听过最好的情话有哪些?鲜花给你,戒指给你,茱萸给你,柔情似水给你,热情如火给你,夏天的西瓜给你,秋...
倒影什么? 倒影什么?倒影是光照射在平静的水面上所成的等大虚像。成像原理遵循平面镜成像的原理。
益安宁丸的功效有什么? 益安宁丸的功效有什么?养心安神,健脾益肝,补血活血,还可以治疗肝肾不足,气血虚弱,所引起的腰漆酸软,...
求《声声慢》小石头和孩子们 求《声声慢》小石头和孩子们求《声声慢》小石头和孩子们声声慢,寻寻觅觅冷冷清清凄凄啴啴七七嗯这一个铲子...
我的同桌 不要抄袭。急。 我的同桌 不要抄袭。急。什么哦?作文还是?怎一个“慢”字了得  我有一个同桌,她是个文文静静的女孩子...
文风类似疯丢子的作者有哪些? 文风类似疯丢子的作者有哪些?文风类似疯丢子的作者有哪些?最好推荐他们的小说。《银河第一纪元》迷路的龙
紫薇适合在家里养吗 紫薇适合在家里养吗紫薇属于乔木,树形太大,养在院子里应该可以的,如果养在室内可能不适宜,很难养好。