第二十二课 编写选择出版社子组件
一、创建src/views/press/press.vue子组件
<template>
<div class="press">
21312
</div>
</template>
<script>
export default {
}
</script>
<style>
</style>
二、src/views/book/bookinfo.vue中加入子组件
<el-dialog title="选择出版社" :visible.sync="dialogPressVisible" width="800px">
<Press></Press>
</el-dialog>
import Press from "@/views/press/press.vue"
components:{
Press
},
dialogPressVisible:true,
三、在bookinfo中加入触发子组件的地方
加入一下两个地方:
1)@click.native在el-form-item中加入,控制弹窗显示
2)readonly,让文本框只读
<el-form-item label="出版社" size="mini" prop="press" @click.native="dialogPressVisible=true">
<el-input readonly v-model="searchWhewe.press" placeholder="请输入出版社"></el-input>
</el-form-item>
如果你想在某个组件的根元素上绑定事件,直接使用 @click=''function' 是不生效的,我们可以添加.native修饰符
四、编写press.vue文件
<template>
<div class="press">
<el-form
:inline="true"
:model="searchWhewe"
class="demo-form-inline"
style="margin-top: 20px"
ref="ruleForm"
>
<el-form-item label="出版社名称" size="mini" prop="press">
<el-input
v-model="searchWhewe.press"
placeholder="请输入出版社"
></el-input>
</el-form-item>
<el-form-item size="mini">
<el-button type="primary" @click="fetchData">查询</el-button>
</el-form-item>
</el-form>
<el-table :data="bookinfolist" highlight-current-row @current-change="currentChange">
<el-table-column fixed label="序号" type="index"></el-table-column>
<el-table-column label="出版社" prop="press"></el-table-column>
</el-table>
<el-pagination
@size-change="handleSizeChage"
@current-change="handleCurrentChange"
:current-page="currentPage"
:page-sizes="[100, 200, 300, 400]"
:page-size="pageSize"
layout="total,sizes,prev,pager,next,jumper"
:total="total"
>
</el-pagination>
</div>
</template>
<script>
import bookinfoApi from "@/api/bookinfo";
export default {
data() {
return {
bookinfolist: [],
searchWhewe: {
press: "",
},
total: 1, //总记录数
currentPage: 1, //当前页
pageSize: 10, //每页显示条数,为10条
};
},
created() {
this.fetchData();
},
methods: {
fetchData() {
let data = {
pageSize: this.pageSize,
currentPage: this.currentPage,
searchWhewe: this.searchWhewe,
};
bookinfoApi.getBookInfoList(data).then((response) => {
const resp = response.data.data;
this.bookinfolist = resp;
});
},
handleSizeChage(size) {
this.pageSize = size;
this.fetchData();
},
handleCurrentChange(currentPage) {
this.currentPage = currentPage;
this.fetchData();
},
currentChange(currentRow,oldCurrentRow){
this.$emit('sendData',currentRow)
}
},
};
</script>
五、编写选中后还需要在父组件的bookinfo中显示
<el-dialog title="选择出版社" :visible.sync="dialogPressVisible" width="800px">
<Press @sendData="getData"></Press>
</el-dialog>
getData(currentRow){
console.log(currentRow)
this.searchWhewe.press = currentRow.press;
this.dialogPressVisible = false
}