我們在做uni項目開發(fā)的時候,經(jīng)常會遇到要使用一些通用的模塊羊始,比如一個彈窗旱幼,一組按鈕,如果每個頁面重復(fù)編寫突委,比如會耗費很大的時間柏卤,也不利于系統(tǒng)的維護和管理,所以我們有必要把它寫成一個通用的模塊匀油,以實現(xiàn)任意調(diào)用的目的缘缚。
所有的組件都會被定義在components目錄下,如果您新建的項目中沒有這個目錄敌蚜,也可以自己創(chuàng)建桥滨,如下就是一個被定義好的組件(shopwind-multpicker)結(jié)構(gòu):
components/
shopwind-multpicker/
shopwind-multpicker.js
shopwind-multpicker.vue
pages/
static/
App.vue
每個組件就是一個文件夾,定義好組件之后钝侠,我們就可以在視圖(vue)中調(diào)用该园,代碼示例如下:
<shopwind-multpicker :title="title" idField="region_id" nameField="region_name" parentField="parent_id" :selected="selected" @confirm="confirm"></shopwind-multpicker>
這樣就完成了一個組件的顯示酸舍,那么我們?nèi)绾螌⒔M件的值傳到父頁面的帅韧,可以通過在組件(shopwind-multpicker.vue)文件中使用 this.$emit 方法:
// 組件的vue文件
this.$emit('confirm', '返回父頁面的結(jié)果集')
然后在父頁面中,你需要定義跟emit第一個參數(shù)名稱一致的方法(這里為:confirm)來接收字組件的返回結(jié)果啃勉,這個方法定義在methods中
// 父頁面的vue文件
export default {
data() {
return {}
},
methods: {
confirm(result) {
// 這里可以獲取您選擇后返回的數(shù)據(jù)
console.log(result)
}
}
}
這樣就完成了一個父子頁面的傳值忽舟,本例中使用了 shopwind-multpicker 組件,該組件是一個支持三級聯(lián)動的插件,比如地區(qū)聯(lián)動叮阅,分類聯(lián)動刁品,可以支持任意模型的三級聯(lián)動,效果展示如下
地區(qū)分類組件