vue 組件傳值


 

  我們的場景是在父組件點擊按鈕彈出子組件,子組件里對數據進行編輯操作以后通知父組件操作完成。彈窗效果是框架自帶的,這里只說一下組件之間如何傳值。

  子組件:dtls.vue

  父組件:  Service.vue

  


  首先父組件要調用子組件:import dtls from './dtls.vue'  (注意,兩個vue文件在同一個文件夾下則前面路徑給 ./ 即可,不在一個文件夾下的自行科普路徑問題)

  導入以后添加到當前vue的實例里,如圖:

  

     父頁面調用的時候直接使用名稱做的標簽即可:<dtls></dtls>

     到此可以訪問到子組件的html了,但是我需要把父組件的數據給子組件,是個對象:

  首先我在父組件里的子組件標簽上定義並賦值一個變量:<dtls :editObject=editObject ></dtls>

  注意,:editObject是我定義的名稱(用於子組件的取值,你可以理解為形參),等號右邊的editObject是我父組件里的一個對象,可以理解為實參,就是實際的值,要傳遞給子組件的值,名稱可以不一樣。

  到這一步父組件的事就完成了,該子組件接收值了:

  

  在子組件的實例里通過props來獲取我在父組件傳遞的editObject對象,這個時候,子組件已經取得了editObject的值。注意,此時不必再在子組件里定義一個editObject對象,傳遞過來的參數editObject已經是當前子組件的一個對象了,按正常使用即可,比如我要在子組件的頁面上顯示具體的值:

  

  通過:model就能綁定值,下面訪問的時候,v-model即可:

  

  由於label標簽無法 v-model賦值,所以通過{{對象.屬性}}即可顯示具體字段值。

  現在父組件調子組件完成傳值了,輪到子組件完成某個操作反饋信息給父組件了:

  首先我們在子組件的某個操作完成事件里(比如保存方法的最后一行)定義一個函數並攜帶上一個對象作為參數:this.$emit('Success', "OK"),圖示:

  

  Success你可以理解為回調函數名,這個是子組件自定義的一個名稱,$emit方法可以理解為定義一個回調函數名稱,並傳遞一個實參,可以是任何字符串、數組、或者對象。我這里只需傳個OK字符串。

  好了,子組件的事情完成了,剩下的就是父組件對子組件定義的回調函數進行監聽。

  現在我們回到父組件的頁面上,在dtls標簽上加上事件綁定:v-on:Success="Success",完整的dtls標簽如下:

  

  最后一步,在父組件里定義一個函數,名為Success:

  

  同理,父組件里的函數名可以和子組件不同,等號左邊和右邊應該是分別對應一個,我這里沒必要寫成不一樣的,就沒去嘗試了,大家有自己需求的可以試試。

  到此整個組件傳值就完成了,從父組件調用子組件並傳遞對象,到子組件完成操作以后定義事件,最后父組件對子組件的事件進行監聽。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM