vue?雙向綁定問(wèn)題$emit無(wú)效的解決
vue 雙向綁定問(wèn)題$emit無(wú)效
父組件變量傳給子組件,子組件$emit 觸發(fā)父組件的方法修改父組件的變量,但是父組件的值變了,子組件的值沒(méi)有改變
父組件
<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>
存在上面問(wèn)題,$emit 觸發(fā)后 值還是沒(méi)有變化的
原因: $emit傳給父組件后,不能立馬傳給子組件,這中間存在一個(gè)異步的問(wèn)題,所以 加一個(gè)setTimeout為0,解決這個(gè)異步問(wèn)題
?? ?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ù)源到頁(yè)面,也有頁(yè)面到數(shù)據(jù)源,在不操作DOM的前提下,快速獲取表單的數(shù)據(jù)(v-bind是單向綁定,只有數(shù)據(jù)源到頁(yè)面)
功能
- 用戶輸入的數(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的庫(kù)文件 --> <script src="./lib/vue-2.6.12.js"></script> <!-- 創(chuàng)建vue的實(shí)例對(duì)象 --> <script> const vm = new Vue({ // 表示當(dāng)前vm實(shí)例要控制頁(yè)面上的哪個(gè)區(qū)域,接收的值是一個(gè)選擇器 el: '#app', // data對(duì)象就是要渲染到頁(yè)面上的數(shù)據(jù) data: { username: 'xfds', text: '123', city: '' }, methods: { } }) </script> </body> </html>
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
element-ui 設(shè)置菜單欄展開(kāi)的方法
今天小編就為大家分享一篇element-ui 設(shè)置菜單欄展開(kāi)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08利用Vue實(shí)現(xiàn)卡牌翻轉(zhuǎn)的特效
這篇文章主要介紹了如何利用Vue實(shí)現(xiàn)一個(gè)春節(jié)抽???yè)面,采用了卡牌翻轉(zhuǎn)的形式。文中的實(shí)現(xiàn)方法講解詳細(xì),快跟隨小編一起學(xué)習(xí)一下吧2022-02-02vue2自定義組件通過(guò)rollup配置發(fā)布到npm的詳細(xì)步驟
這篇文章主要介紹了vue2自定義組件通過(guò)rollup配置發(fā)布到npm,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03Unocss(原子化css)?使用及vue3?+?vite?+?ts講解
這篇文章主要介紹了Unocss(原子化css)使用vue3?+?vite?+?ts的方法,簡(jiǎn)單介紹了Unocss使用及圖標(biāo)庫(kù)使用,通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11