Vue2中ref属性的用法
Vue2中ref属性的用法
最近写东西遇到了莫名其妙的问题,用ref属性原以为它会获得一个数组http://www.jianshu.com/p/05c863ec2a23
-
// html
-
<ul>
-
<li ref="refCon">1</li>
-
<li ref="refCon">2</li>
-
</ul>
-
// js
-
created: function() {
-
this.$nextTick(() => {
-
console.log(this.$refs.refCon)
-
// 打印结果:<li>2</li> 本以为会获得一个数组
-
})
-
}
后来去看了下文档才搞明白orz。(没仔细看文档的锅
js01.png
这下就明白了
-
// html
-
<ul>
-
<li v-for="item in people" ref="refContent">{{item}}</li>
-
</ul>
-
// js
-
data: {
-
people:['三姑','四婶','五叔','六姨','七舅姥爷']
-
},
-
created: function() {
-
this.$nextTick(() => {
-
console.log(this.$refs.refContent)
-
})
-
}
js02.png
以及一定要注意
-
// js
-
data: {
-
people:['三姑','四婶','五叔','六姨','七舅姥爷']
-
},
-
created: function() {
-
console.log(this.$refs.refContent)
-
// undefined
-
}
-
<div id="app">
-
<navbar></navbar>
-
<pagefooter></pagefooter>
-
</div>
-
Vue.component('navbar',{
-
template:'#navbar',
-
data:function () {
-
return {
-
navs:[]
-
}
-
}
-
});
-
Vue.component('pagefooter',{
-
template:'#pagefooter',
-
data:function () {
-
return {
-
footer:''
-
}
-
}
-
});
-
new Vue({
-
el:'#app',
-
mounted:function () {
-
//ready,
-
//这里怎么直接访问navbar的navs和pagefooter的footer值呢,
-
}
-
})
这就用到ref了
修改组件
-
<div id="app">
-
<navbar ref="navbar"></navbar>
-
<pagefooter ref="pagefooter"></pagefooter>
-
</div>
-
new Vue({
-
el:'#app',
-
mounted:function () {
-
//ready,
-
//这里怎么直接访问navbar的navs和pagefooter的footer值呢,
-
console.log(this.$refs.navbar.navs);
-
console.log(this.$refs.pagefooter.footer);
-
}
-
})
如果仅仅用到一个普通标签上
<div ref="demo"></div>
他的作用和:
document.querySelector('[ref=demo]');
的作用一样