vue?雙向綁定問題$emit無效的解決
更新時間:2022年09月24日 08:42:31 作者:lt要努力
這篇文章主要介紹了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傳給父組件后,不能立馬傳給子組件,這中間存在一個異步的問題,所以 加一個setTimeout為0,解決這個異步問題
?? ?change(){
?? ??? ?console.log(this.status, 1) ?// false
?? ??? ?this.$emit('update:status', true)
?? ??? ?setTimeout(() => {
? ? ? ??? ??? ?console.log(this.status, 2) ?// true
? ? ??? ?}, 0)
?? ?}vue雙向綁定指令
雙向綁定指令:
v-model:雙向綁定,既有數(shù)據源到頁面,也有頁面到數(shù)據源,在不操作DOM的前提下,快速獲取表單的數(shù)據(v-bind是單向綁定,只有數(shù)據源到頁面)
功能
- 用戶輸入的數(shù)據更改后,數(shù)據源的數(shù)據自動更改;
- 數(shù)據源的數(shù)據更改后,用戶界面的數(shù)據也更改。
效果展示

代碼如下:
<!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="">請選擇</option>
<option value="1">浙江</option>
<option value="2">江西</option>
</select>
</div>
<!-- 導入vue的庫文件 -->
<script src="./lib/vue-2.6.12.js"></script>
<!-- 創(chuàng)建vue的實例對象 -->
<script>
const vm = new Vue({
// 表示當前vm實例要控制頁面上的哪個區(qū)域,接收的值是一個選擇器
el: '#app',
// data對象就是要渲染到頁面上的數(shù)據
data: {
username: 'xfds',
text: '123',
city: ''
},
methods: {
}
})
</script>
</body>
</html>以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
vue2自定義組件通過rollup配置發(fā)布到npm的詳細步驟
這篇文章主要介紹了vue2自定義組件通過rollup配置發(fā)布到npm,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03
Unocss(原子化css)?使用及vue3?+?vite?+?ts講解
這篇文章主要介紹了Unocss(原子化css)使用vue3?+?vite?+?ts的方法,簡單介紹了Unocss使用及圖標庫使用,通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2022-11-11

