$ ref
ref 被用来给元素或子组件注册引用信息
ref 有三种用法:
1、ref 加在普通的元素上,用this.
r
e
f
s
.
(
r
e
f
值
)
获
取
到
的
是
d
o
m
元
素
2
、
r
e
f
加
在
子
组
件
上
,
用
t
h
i
s
.
refs.(ref值) 获取到的是dom元素 2、ref 加在子组件上,用this.
refs.(ref值)获取到的是dom元素 2、ref加在子组件上,用this.refs.(ref值) 获取到的是组件实例,可以使用组件的所有方法。在使用方法的时候直接this.
r
e
f
s
.
(
r
e
f
值
)
.
方
法
(
)
就
可
以
使
用
了
。
3
、
如
何
利
用
v
−
f
o
r
和
r
e
f
获
取
一
组
数
组
或
者
d
o
m
节
点
如
果
通
过
v
−
f
o
r
遍
历
想
加
不
同
的
r
e
f
时
记
得
加
:
号
,
即
:
r
e
f
=
某
变
量
;
这
点
和
其
他
属
性
一
样
,
如
果
是
固
定
值
就
不
需
要
加
:
号
,
如
果
是
变
量
记
得
加
:
号
。
(
加
冒
号
的
,
说
明
后
面
的
是
一
个
变
量
或
者
表
达
式
;
没
加
冒
号
的
后
面
就
是
对
应
的
字
符
串
常
量
(
S
t
r
i
n
g
)
应
注
意
的
坑
有
:
1
、
r
e
f
需
要
在
d
o
m
渲
染
完
成
后
才
会
有
,
在
使
用
的
时
候
确
保
d
o
m
已
经
渲
染
完
成
。
比
如
在
生
命
周
期
m
o
u
n
t
e
d
(
)
钩
子
中
调
用
,
或
者
在
t
h
i
s
.
refs.(ref值).方法() 就可以使用了。 3、如何利用 v-for 和 ref 获取一组数组或者dom 节点 如果通过v-for 遍历想加不同的ref时记得加 :号,即 :ref =某变量 ; 这点和其他属性一样,如果是固定值就不需要加 :号,如果是变量记得加 :号。(加冒号的,说明后面的是一个变量或者表达式;没加冒号的后面就是对应的字符串常量(String) 应注意的坑有: 1、ref 需要在dom渲染完成后才会有,在使用的时候确保dom已经渲染完成。比如在生命周期 mounted(){} 钩子中调用,或者在 this.
refs.(ref值).方法()就可以使用了。 3、如何利用v−for和ref获取一组数组或者dom节点 如果通过v−for遍历想加不同的ref时记得加:号,即:ref=某变量; 这点和其他属性一样,如果是固定值就不需要加:号,如果是变量记得加:号。(加冒号的,说明后面的是一个变量或者表达式;没加冒号的后面就是对应的字符串常量(String)应注意的坑有:1、ref需要在dom渲染完成后才会有,在使用的时候确保dom已经渲染完成。比如在生命周期mounted()钩子中调用,或者在this.nextTick(()=>{}) 中调用。
2、如果ref 是循环出来的,有多个重名,那么ref的值会是一个数组 ,此时要拿到单个的ref 只需要循环就可以了。
vm.
e
l
获
取
V
u
e
实
例
关
联
的
D
O
M
元
素
;
比
方
说
我
这
里
想
获
取
自
定
义
组
件
t
a
b
C
o
n
t
r
o
l
,
并
获
取
它
的
O
f
f
s
e
t
T
o
p
。
就
需
要
先
获
取
该
组
件
。
在
组
件
内
设
置
属
性
r
e
f
=
′
一
个
名
称
(
t
a
b
C
o
n
t
r
o
l
2
)
′
,
然
后
t
h
i
s
.
el 获取Vue实例关联的DOM元素; 比方说我这里想获取自定义组件tabControl,并获取它的OffsetTop。就需要先获取该组件。 在组件内设置 属性 ref='一个名称(tabControl2)', 然后 this.
el获取Vue实例关联的DOM元素;比方说我这里想获取自定义组件tabControl,并获取它的OffsetTop。就需要先获取该组件。在组件内设置属性ref=′一个名称(tabControl2)′,然后this.refs.tabControl2 就拿到了该组件
切记:ref属性,而获取组件的时候要用
r
e
f
s
获
取
O
f
f
s
e
t
T
o
p
,
组
件
不
是
D
O
M
元
素
,
是
没
有
O
f
f
s
e
t
T
o
p
的
,
无
法
通
过
点
.
O
f
f
s
e
t
T
o
p
来
获
取
的
。
就
需
要
通
过
refs 获取 OffsetTop,组件不是DOM元素,是没有OffsetTop的,无法通过 点 .OffsetTop来获取的。就需要通过
refs获取OffsetTop,组件不是DOM元素,是没有OffsetTop的,无法通过点.OffsetTop来获取的。就需要通过el来获取组件中的DOM元素