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]');
的作用一样