引言
在实际项目过程中有很多基本的功能经常会遇到,因此统一收集一下可以更好地进行理解。
正文
一:链接跳转传参(单页面)
法一(带问号的):
传:this.$router.push({path: '', query: { 参数名:参数值}})
收:this.$route.query.参数名
法二(不带问号的):
传:this.$router.push({path:'/xx/xx' + val.vv})
收:this.$route.path.split('/').reverse()[0]
this.$router.push():跳转到不同的url,但这个方法回向history栈添加一个记录,点击后退会返回到上一个页面
法三/四:
this.$router.replace():不会有记录
this.$router.go(n):n可为正数可为负数。正数返回上一个页面,类似 window.history.go(n)
二:登录功能时,账号密码自动填充
在同域名下,chrome会进行自动填充?
当input = "password"的时候,会自动将前一个input默认为账号而填充;
解决: autoComplate = "off" 或者 autoComplate = "new-password"
三:SessionStorage存取使用:
存:sessionStorage.user = Json.stringify(res)
取:JSON.parse(sessionStorage.getItem('user'))
清除:sessionStorage.removeItem('user')
注:其中 user是可改的,res是存的数据
四:分页:
- 后端分页:
<el-pagination
background
layout="prev,pager,next"
:total="tableList.pagination.totalRow"
@current-change="changePage"
:current-change.sync="tableList.pagination.pageIndex || 0"
:page-size="tableList.pagination.pageSize"
:page-count= "tableList.pagination.totalPage || 0"
>
</el-pagination>
userList(param) {
let params = {
"pageIndex": 1,
"pageSize": 10,
...param
}
userList(params).then((res) => {
if(res.data.code === 1000) {
const { pageIndex,pageSize,startRow,totalPages,totalRows,list} = res.data.data;
this.tableList.backStageUserList = list;
this.tableList.pagination = { pageIndex,pageSize,startRow,totalPages }
}
},(err) => {
this.$message.error(err)
})
}
changePage(page) {
this.userList({pageIndex: page})
}
- 前端分页,后端只返回总数据:(就是拿到后端返回的所有数据通过分页将数据进行分割,再将分割好了之后的数据放入表格中通过表格展示。)
<el-table :data="newOrgListData">
</el-table>
<el-pagination
background
layout="prev, pager, next"
:total="orgListData.length"
:page-size="5"
:current-page.sync="currentPage"
@current-change="handleCurrentChange"
prev-text="上一页"
next-text="下一页"
></el-pagination>
data() {
currentPage: 1,
newOrgListData: [],
orgListData: []
}
xxx().then((res) => {
if(res.data.code === 1000) {
this.orgListData = res.data.data
this.handleCurrentChange(1)
}
})
handleCurrentChange(index) { //currentPage变动时触发,index值为当前页
this.currentpageOrg = index
this.newOrgListData = this.orgListData.slice((index - 1) * 5, index * 5) //根据每页5条将初始数据orgListData进行裁剪赋值给新数组newOrgListData
},
五:表格自定义内容:
<el-table-column label = "序号" fixed>
<template slot-scope = "scoped">
<span>{{scope.$index + (tableList.pagination.startRow + 1)}}</span>
</template>
</el-table-column>
<el-table-column label = "日期">
<template slot-scope = "scoped">
<span>{{scope.row.createTime}}</span>
</template>
</el-table-column>
六:表单提交:
- 确认添加成功时使用以下两个:清空:this.addRoleForm = Object.assign({},{}),重置必填的校验:this.$refs['addRoleForm'].resetFields()。写在请求成功后的里面。
- :label为展示在页面的数据,也是v-model对应的。
-
获取下拉列表几个值的方法:
(1).filter(const roleCode = this.下拉列表数据.filter(item => item => item.xxx == this.想匹配的数据.bbb))[0]。
(2). 在el-select中加 @change="xxx">xxx(val){ clg(val) }
七:Tab切换:
<keep-alive> //减少性能消耗
<div class="tabs">
<span v-for="(item,index) in tabItems"
:class="{'on':currentTab === index}"
@click="changeTab(item,index)
:key="index">{{item.name}}
</span>
</div>
</keep-alive>
data() {
tabItems: [{},{}],
currentTab: 0
}
changeTab(item,index) {
this.currentTab = index
}
更多请参考我的博客
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。