说明
vue项目中,当组件由引用时,父组件传给子组件的值可以由两种方法实现
方法一: 父组件像传输数据一样直接传方法给子组件
方法二: 利用VueComponent实例的 this.$emit()
函数实现
应用
方法主要在子组件,父组件主要是入参不同和函数的内容不同,search1代表第一种方法以v-bind方式传递 search2代表第二种方法以v-on方式传递
父组件
1 2 3 4 5 6 7 8
| <template> <search-table :searchPage1="searchUser" @searchPage2="searchUserCallback" ></search-table> </template>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| export default { name:'User', methods:{ searchUser(params){ return pageUser(params); }, searchUserCallback(params,callback){ pageUser(params).then((res)=>{ callback(res) }) } } }
|
子组件
1
| <el-button type="primary" icon="el-icon-search" @click="search" >搜索</el-button>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| export default{ props:{ searchPage1:{ type:Function, default(){ return new Promise(); } } } methods:{ search(){ this.search1() },
search1(){ this.searchPage1(this.pageQuery).then(res=>{ let data = res.data; this.pageQuery.total=data.total this.tableData=data.data }) }, search2(){ this.$emit('searchPage2',this.pageQuery, res =>{ let data = res.data; this.pageQuery.total=data.total this.tableData=data.data }) }, } }
|