网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
12月11日漏签0天
前端吧 关注:224,580贴子:1,391,377
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 26回复贴,共1页
<<返回前端吧
>0< 加载中...

vue搜索与分页问题

  • 只看楼主
  • 收藏

  • 回复
  • 小小小蓝蜗牛
  • 江湖少侠
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
页面有几个输入框可以进行搜索,搜索和分页组件调用的方法是同一个方法,方法通过传给后端这几个字段的值获取数据,
问题:1、在搜索框里某个字段中输入值,但是不点击搜索按钮,点击分页组件中的下一页,预期得到的是所有数据的下一页,结果却是按该字段搜索的内容。
2、输入框中输入值,点击搜索出结果,把输入框中的值去掉,点击分页组件中的下一页,预期得到的是按该字段搜索的内容的下一页,结果却是没所有数据的下一页
不知道吧友们有没有遇到这些问题?你们是怎么解决的?


  • kiss歆儿
  • 英雄豪杰
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我觉得这个错误比较低级,建议把整个组件代码截图发来看下


2025-12-11 01:53:13
广告
不感兴趣
开通SVIP免广告
  • Kisarigi
  • 人海孤鸿
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
那就不要直接把和搜索框双向绑定的值拿来用,只有当点击搜索按钮时,才把值赋给params里的searchContent,再传给requestData(params)请求数据。


  • 君子不器
  • 自成一派
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
无码言*


  • 雪乃学姐
  • 初涉江湖
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
方法写几个字段的形参,每次刷新页面或者点击搜索,把搜索框的值或者没有的话给个空字符串,传给方法,方法里拼接字符串把下一页 上一页 调用方法的参数,用形参拼上去,应该就没你这奇怪的问题了(我大三,学后端的,说错了别怪我)


  • 小小小蓝蜗牛
  • 江湖少侠
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
<template>
<div class="app-container">
<div class="filter-container">
<el-input v-model="listQuery.params.name" placeholder="发起人" style="width: 200px;" class="filter-item" @keyup.enter.native="handleFilter"/>
<el-select v-model="listQuery.params.formId" placeholder="流程表单" style="width: 200px;" class="filter-item">
<el-option
v-for="item in forms"
:key="item.id"
:label="item.name"
:value="item.id"></el-option>
</el-select>
<el-select v-model="listQuery.params.status" placeholder="流程状态" style="width: 200px;" class="filter-item">
<el-option
v-for="item in statusOptions"
:key="item.value"
:label="item.label"
:value="item.value"></el-option>
</el-select>
<el-button v-waves class="filter-item ml10" plain type="primary" icon="el-icon-search" @click="handleFilter">
搜索
</el-button>
</div>
<el-table
:key="tableKey"
v-loading="listLoading"
:data="list"
:stripe="true"
fit
highlight-current-row
style="width: 100%;"
@sort-change="sortChange"
>
<el-table-column label="发起人" min-width="150" align="center" prop="createUser">
</el-table-column>
<el-table-column label="发起时间" min-width="150" align="center" prop="createDate">
</el-table-column>
<el-table-column label="流程名" min-width="150" align="center" prop="name">
</el-table-column>
<el-table-column label="当前审核人" min-width="150" align="center" prop="currentUser">
</el-table-column>
<el-table-column label="操作" align="center" min-width="200" class-name="small-padding fixed-width">
<template slot-scope="{row}">
<span class="table-cell-btn" @click="gotoDetail(row)">
<i><svg-icon icon-class="look"/></i>查看
</span>
</template>
</el-table-column>
</el-table>
<pagination v-show="total>0" :total="total" :page.sync="listQuery.pageNum" :limit.sync="listQuery.pageSize" @pagination="getList"/>
</div>
</template>
<script>
import { page } from '@/api/flow/instance'
import { findAllForms } from '@/api/flow/form'
import { convertToPageRequest } from '@/utils/page-request'
import waves from '@/directive/waves' // waves directive
import Pagination from '@/components/zbComponents/Pagination' // secondary package based on el-pagination
export default {
name: 'BizDomainTable',
components: { Pagination },
directives: { waves },
data () {
return {
tableKey: 0,
list: null,
total: 0,
listLoading: true,
listQuery: {
pageNum: 1,
pageSize: 10,
params: {
name: '',
formId: '',
status: ''
}
},
statusOptions: [
{ value: '', label: '全部' },
{ value: '1', label: '审批中' },
{ value: '2', label: '审批通过' },
{ value: '3', label: '结束' },
{ value: '4', label: '被退回' }
],
forms: []
}
},
created () {
this.getList()
this.getForms()
},
methods: {
getList () {
this.listLoading = true
page(convertToPageRequest(this.listQuery)).then(response => {
this.list = response.result.content
this.total = response.result.total
this.listLoading = false
})
},
getForms () {
findAllForms().then(response => {
this.forms = response.result
})
},
handleFilter () {
this.listQuery.pageNum = 1
this.getList()
},
gotoDetail (row) {
this.$router.push({path: 'instance-detail', query: { instanceId: row.id }})
},
sortChange (data) {
}
}
}
</script>


  • 贴吧用户_7t9PS7S
  • 初涉江湖
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
input里面双向绑定你绑定在listQuery.params.name里面,搜索按钮也是调用getList,分页也是调用getList,你点击下一页相当于点击了搜索按钮,由于双向绑定,搜索框里面的值被直接提交过去了,跳过了搜索按钮,返回过来页面渲染就是搜索框内容的下一页。
个人解决办法和6楼一样,这个不能直接双向绑定给listQuery.params.name,你再定义一个变量,你input输入框中的值双向绑定给新变量,然后搜索按钮点击后才会将新变量的值赋值给listQuery.params.name,然后再调getList


  • Kisarigi
  • 人海孤鸿
    4
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
<template>
<div class="app-container">
<div class="filter-container">
<el-input v-model="tempQuery.params.name" placeholder="发起人" style="width: 200px;" class="filter-item" @keyup.enter.native="handleFilter"/>
<el-select v-model="tempQuery.params.formId" placeholder="流程表单" style="width: 200px;" class="filter-item">
<el-option
v-for="item in forms"
:key="item.id"
:label="item.name"
:value="item.id"></el-option>
</el-select>
<el-select v-model="tempQuery.params.status" placeholder="流程状态" style="width: 200px;" class="filter-item">
<el-option
v-for="item in statusOptions"
:key="item.value"
:label="item.label"
:value="item.value"></el-option>
</el-select>
<el-button v-waves class="filter-item ml10" plain type="primary" icon="el-icon-search" @click="handleFilter">
搜索
</el-button>
</div>
<el-table
:key="tableKey"
v-loading="listLoading"
:data="list"
:stripe="true"
fit
highlight-current-row
style="width: 100%;"
@sort-change="sortChange"
>
<el-table-column label="发起人" min-width="150" align="center" prop="createUser">
</el-table-column>
<el-table-column label="发起时间" min-width="150" align="center" prop="createDate">
</el-table-column>
<el-table-column label="流程名" min-width="150" align="center" prop="name">
</el-table-column>
<el-table-column label="当前审核人" min-width="150" align="center" prop="currentUser">
</el-table-column>
<el-table-column label="操作" align="center" min-width="200" class-name="small-padding fixed-width">
<template slot-scope="{row}">
<span class="table-cell-btn" @click="gotoDetail(row)">
<i><svg-icon icon-class="look"/></i>查看
</span>
</template>
</el-table-column>
</el-table>
<pagination v-show="total>0" :total="total" :page.sync="listQuery.pageNum" :limit.sync="listQuery.pageSize" @pagination="getList"/>
</div>
</template>
<script>
import { page } from '@/api/flow/instance'
import { findAllForms } from '@/api/flow/form'
import { convertToPageRequest } from '@/utils/page-request'
import waves from '@/directive/waves' // waves directive
import Pagination from '@/components/zbComponents/Pagination' // secondary package based on el-pagination
export default {
name: 'BizDomainTable',
components: { Pagination },
directives: { waves },
data () {
return {
tableKey: 0,
list: null,
total: 0,
listLoading: true,
tempQuery:{
params: {
name: '',
formId: '',
status: ''
}
},
listQuery: {
pageNum: 1,
pageSize: 10,
params: {
name: '',
formId: '',
status: ''
}
},
statusOptions: [
{ value: '', label: '全部' },
{ value: '1', label: '审批中' },
{ value: '2', label: '审批通过' },
{ value: '3', label: '结束' },
{ value: '4', label: '被退回' }
],
forms: []
}
},
created () {
this.getList()
this.getForms()
},
methods: {
getList () {
this.listLoading = true
page(convertToPageRequest(this.listQuery)).then(response => {
this.list = response.result.content
this.total = response.result.total
this.listLoading = false
})
},
getForms () {
findAllForms().then(response => {
this.forms = response.result
})
},
handleFilter () {
this.listQuery.pageNum = 1
this.listQuery.params.name=this.tempQuery.params.name
this.listQuery.params.status=this.tempQuery.params.status
this.listQuery.params.formId=this.tempQuery.params.formId
this.getList()
},
gotoDetail (row) {
this.$router.push({path: 'instance-detail', query: { instanceId: row.id }})
},
sortChange (data) {
}
}
}
</script>


2025-12-11 01:47:13
广告
不感兴趣
开通SVIP免广告
  • 陌陌的王子
  • 武林新贵
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
就是别用输入框的参数来双向绑定接口的参数,只要点击搜索按钮再赋值过去 也就是6楼那个意思


  • 小小小蓝蜗牛
  • 江湖少侠
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • 贴吧用户_7t9PS7S
  • 初涉江湖
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
说实在的,看完你13楼的代码,我就感觉非常奇怪了,你对简单数据类型直接赋值会赋地址然后影响到被赋值的数据?然后我写了个简单的demo
demo本体:


输入name,formId,status内容,然后点击按钮将内容绑定给listQuery

修改输入框中内容,由于双向绑定,tempQuery中params对象中的数据会同步发生变化,按照你的观点,由于是“拷地址”,那么listQuery中,params对象中的值也会因为vue响应式发生变化,显然没有,说明不是拷地址而是拷值,还不信继续往下看

打开控制台,输入vm.tempQuery.params,可以发现tempQuery.params的值确双向绑定发生了变化,然后再输入vm.listQuery.params可以发生数据依然是第一次点击按钮所赋的值

还有Object.assign()对象合并对于复杂数据类型(数组,对象)是拷地址,你这个又能实现让我感觉非常奇怪


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 26回复贴,共1页
<<返回前端吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示