vue?雙向綁定問題$emit無效的解決
vue 雙向綁定問題$emit無效
父組件變量傳給子組件,子組件$emit 觸發(fā)父組件的方法修改父組件的變量,但是父組件的值變了,子組件的值沒有改變
父組件
<div>
?? ?// 子組件
?? ?<son :status.sync="status"/>
</div>
<script>
export default {
?? ?data(){
?? ??? ?return{
?? ??? ??? ?status:false
?? ??? ?}
?? ?}
}
</script>子組件
<div @click="change"></div>
<script>
export default {
props:{
?? ?status: {
? ? ? type: Boolean,
? ? ? default: false
? ? }
}
methods:{
?? ?change(){
?? ??? ?console.log(this.status, 1) ?// false
?? ??? ?this.$emit('update:status', true)
?? ??? ?console.log(this.status, 2) ?// false
?? ?}
}
}
</script>存在上面問題,$emit 觸發(fā)后 值還是沒有變化的
原因: $emit傳給父組件后,不能立馬傳給子組件,這中間存在一個(gè)異步的問題,所以 加一個(gè)setTimeout為0,解決這個(gè)異步問題
?? ?change(){
?? ??? ?console.log(this.status, 1) ?// false
?? ??? ?this.$emit('update:status', true)
?? ??? ?setTimeout(() => {
? ? ? ??? ??? ?console.log(this.status, 2) ?// true
? ? ??? ?}, 0)
?? ?}vue雙向綁定指令
雙向綁定指令:
v-model:雙向綁定,既有數(shù)據(jù)源到頁面,也有頁面到數(shù)據(jù)源,在不操作DOM的前提下,快速獲取表單的數(shù)據(jù)(v-bind是單向綁定,只有數(shù)據(jù)源到頁面)
功能
- 用戶輸入的數(shù)據(jù)更改后,數(shù)據(jù)源的數(shù)據(jù)自動(dòng)更改;
- 數(shù)據(jù)源的數(shù)據(jù)更改后,用戶界面的數(shù)據(jù)也更改。
效果展示

代碼如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>title</title>
</head>
<body>
<div id="app">
<!-- input輸入框 -->
<p>用戶的名字是:{{ username }}</p>
<input type="text" v-model="username">
<hr>
<!-- textarea -->
<textarea v-model="text" name="" id="" cols="30" rows="10"></textarea>
<!-- select下拉框 -->
<select v-model="city" name="" id="">
<option value="">請(qǐng)選擇</option>
<option value="1">浙江</option>
<option value="2">江西</option>
</select>
</div>
<!-- 導(dǎo)入vue的庫文件 -->
<script src="./lib/vue-2.6.12.js"></script>
<!-- 創(chuàng)建vue的實(shí)例對(duì)象 -->
<script>
const vm = new Vue({
// 表示當(dāng)前vm實(shí)例要控制頁面上的哪個(gè)區(qū)域,接收的值是一個(gè)選擇器
el: '#app',
// data對(duì)象就是要渲染到頁面上的數(shù)據(jù)
data: {
username: 'xfds',
text: '123',
city: ''
},
methods: {
}
})
</script>
</body>
</html>以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue中v-on的基礎(chǔ)用法、參數(shù)傳遞和修飾符的示例詳解
使用v-on:click給button綁定監(jiān)聽事件以及回調(diào)函數(shù),@是v-on:的縮寫,也就是簡寫也可以使用@click,這篇文章主要介紹了Vue中v-on的基礎(chǔ)用法、參數(shù)傳遞和修飾符,需要的朋友可以參考下2022-08-08
vue使用sass根據(jù)環(huán)境進(jìn)行樣式判斷區(qū)分方式
這篇文章主要介紹了vue使用sass根據(jù)環(huán)境進(jìn)行樣式判斷區(qū)分方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03
vue cli使用融云實(shí)現(xiàn)聊天功能的實(shí)例代碼
最近小編接了一個(gè)新項(xiàng)目,項(xiàng)目需求要實(shí)現(xiàn)一個(gè)聊天功能,今天小編通過實(shí)例代碼給大家介紹vue cli使用融云實(shí)現(xiàn)聊天功能的方法,感興趣的朋友跟隨小編一起看看吧2019-04-04
Vue獲取子組件實(shí)例對(duì)象ref屬性的方法推薦
在Vue中我們可以使用ref屬性來獲取子組件的實(shí)例對(duì)象,這個(gè)功能非常方便,這篇文章主要給大家介紹了關(guān)于Vue獲取子組件實(shí)例對(duì)象ref屬性的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-06-06
Vue?Router?返回后記住滾動(dòng)條位置的實(shí)現(xiàn)方法
使用?Vue?router?創(chuàng)建?SPA(Single?Page?App),往往有這種需求:首頁是列表頁,點(diǎn)擊列表項(xiàng)進(jìn)入詳情頁,在詳情頁點(diǎn)擊返回首頁后,希望看到的是,首頁不刷新,并且滾動(dòng)條停留在之前的位置,這篇文章主要介紹了Vue?Router?返回后記住滾動(dòng)條位置的實(shí)現(xiàn)方法,需要的朋友可以參考下2023-09-09
基于Vue 2.0 監(jiān)聽文本框內(nèi)容變化及ref的使用說明介紹
今天小編就為大家分享一篇基于Vue 2.0 監(jiān)聽文本框內(nèi)容變化及ref的使用說明介紹,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-08-08

