0.ref放在标签上,可以拿到原生节点
示例:实现不依靠v-model的双向数据绑定
<div id="app">
<!-- 设置ref属性 -->
<input type="text" ref="mytext">
<button @click="fn">点击</button>
</div>
<script>
new Vue({
el: "#app",
methods: {
fn() {
// console.log(this); //查看输出的实例vue
// console.log(this.$refs.mytext);//这是input
console.log(this.$refs.mytext.value); //这是input节点的文本框内容,实现双向绑定
}
}
});
</script>
vue中的$refs:
1.ref放在组件上,拿到的是组件对象
示例:使用ref实现子传父和父传子
<div id="app">
<!-- 设置ref属性 -->
<button @click="fn">点击</button>
<zujian ref="zjtext"></zujian>
</div>
<script>
new Vue({
el: "#app",
methods: {
fn() {
// console.log(this.$refs.zjtext); //获得的是zujian组件
console.log(this.$refs.zjtext.zjInfo); //获得的是zujian组件中的zjInfo数据:helloworld
// 既可以子传父又可以父传子,缺点:耦合度高
console.log(this.$refs.zjtext.add()); //获得的是zujian组件中的add()方法:this is add()
console.log(this.$refs.zjtext.sonToFather("iSay")); //获得的是zujian组件中的info()方法:iSayhiVue
}
},
components: {
'zujian': {
template: `<p>hello</p>`,
data() {
return {
zjInfo: "helloworld"
}
},
methods: {
add() {
return "this is add()";
},
sonToFather(info) {
info = info + "hiVue"
return info;
}
}
}
}
});
</script>