egg(80)--egg之文章修改后返回到当前分页,模糊搜索

本文详细介绍了如何在前后端分离的项目中实现页面跳转及保持上一页面状态的方法,同时深入探讨了在后端进行模糊搜索的实现细节,包括关键词匹配、分页展示及结果优化等关键步骤。

文章修改后返回到当前分页

middleware

app/middleware/adminauth.js

获取上一页的url

ctx.state.prevPage = ctx.request.headers['referer'];  //获取上一页的url

view

app/view/admin/nav/edit.html
在edit的from中把上一页的url提交给后台
<input type="hidden" name="prevPage" value="<%= prevPage %>">

controller

app/controller/admin/nav.js
      async doEdit() {
        var _id=this.ctx.request.body._id;       
        var prevPage = this.ctx.request.body.prevPage;
        await this.ctx.model.Nav.updateOne({"_id":_id},this.ctx.request.body)
         await this.success(prevPage,'编辑导航成功');     

      } 

效果

clipboard.png

模糊搜索

view

app/view/admin/goods/index.html
                        <form role="form" class="form-inline" method="get" action="/admin/goods">
                            <div class="form-group">
                                <label for="name">输入关键词</label>
                                <input type="text" class="form-control" value="<%=keyword%>" id="name" name="keyword" placeholder="请输入名称">
                            </div>
                
                            <div class="form-group">
                                <button type="submit" class="btn btn-default">开始搜索</button>
                            </div>
                        </form>

controller

app/controller/admin/goods.js
  async index() { 
    var page=this.ctx.request.query.page || 1;
    var keyword=this.ctx.request.query.keyword;
    //注意
    var json={};
    if(keyword){
       json=Object.assign({"title":{$regex:new RegExp(keyword)}});
    }
    var pageSize=3;
    //获取当前数据表的总数量
    var totalNum=await this.ctx.model.Goods.find(json).count();
    var goodsResult=await this.ctx.model.Goods.find(json).skip((page-1)*pageSize).limit(pageSize);
     await this.ctx.render('admin/goods/index',{
       list:goodsResult,
       totalPages:Math.ceil(totalNum/pageSize),
       page:page,
       keyword:keyword
     });
 }

效果

clipboard.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值