vue的API中有个混入,这里主要介绍利用选项合并来二次封装element-ui的el-table标签,使其达到可以最大限度的复用。html
官方的例子作了简单的介绍,这里就不浪费篇幅去介绍了,你们能够直接查看官方例子选项合并或则查看下面的截图: vue
利用vue-cli工具新建一个项目,步骤以下:面试
vue create elevue
复制代码
在上面新建的项目根目录下安装element-ui,命令以下:vue-cli
yarn add element-ui
复制代码
安装完后再main.js中添加以下代码: element-ui
<el-row>
<el-button>默认按钮</el-button>
<el-button type="primary">主要按钮</el-button>
<el-button type="success">成功按钮</el-button>
<el-button type="info">信息按钮</el-button>
<el-button type="warning">警告按钮</el-button>
<el-button type="danger">危险按钮</el-button>
</el-row>
复制代码
这里结合element-ui表格的二次封装这篇文章里面封装的table组件来介绍mixins这个文件的具体写法和大体内容。api
因为封装的table适合每一个页面单独使用,这里是须要将大部分的公共功能抽出来整合,减小后面页面的重复劳动,因此须要对此进行改进,主要改进一个地方就是loading的位置以下: 跨域
这时在src目录下新建utils目录,utils目录下新建咱们的mixins.js文件,添加以下简单的代码:浏览器
export var mixin = {
data() {
return {
loading: true, // 加载状态
};
}
};
复制代码
而后再新建项目的home.vue文件中引入上面的文件 bash
export var mixin = {
data() {
return {
loading: true, // 加载状态
};
},
mounted() {
this.getList();
},
methods: {
getList() {
this.$http.get(this.table.listUrl).then(res => {
this.table.data = res.data.recent;
this.loading = false;
});
},
},
};
复制代码
上面有一个listUrl地址目前没有,其实这时只须要在home.vue中定义listUrl便可获取数据了 ide
上面是采用的知乎的开发api须要配置跨域,这里就你们能够自行配置跨域便可。
这个时候就能够看到页面中有数据展现了
export var mixin = {
data() {
return {
page: {
pageSize: 10,
pageSizes: [10, 30, 50, 100, 200],
currentPage: 1,
totalPage: 0,
},
loading: true, // 加载状态
searchFileds: {}, //搜索条件
};
},
mounted() {
this.getList();
},
methods: {
getList() {
this.$http.get(this.table.listUrl).then(res => {
this.table.data = res.data.recent;
this.loading = false;
});
},
handleSizeChange(val) {
this.page.pageSize = val;
},
handleCurrentChange(val) {
this.page.currentPage = val;
},
},
};
复制代码
上面能够将分页和查询都统一到一块儿来处理,只须要修改getList()方法里面的参数便可。
若是你的接口规范的话,甚至删除功能均可以直接写在这里,后面就会少些好多代码的。