html条件查询的页面,如何在 url 中记录页面搜索条件

本文探讨如何在Angular 1.2.5和ui-router 0.2.18的项目中,通过精简URL参数并利用默认值,实现实时搜索而无需页面刷新。作者寻求一种方法,只在必要时传递可选搜索条件,提高用户体验。
摘要由CSDN通过智能技术生成

问题描述

在一个页面,有很多搜索选项,比如十几个。假设全部都有选中,那么查询参数就会有十几个。我想把这些参数都放到 url 上,这样即使页面刷新也能还原之前的搜索条件。

我用的是 angular(1.2.5) + ui-router(0.2.18) 来做的,目前的代码是这样的

贴代码

// config

angular.module('app').config(configRouter);

function configRouter($locationProvider, $urlRouterProvider, $stateProvider) {

$locationProvider.html5Mode(false);

$urlRouterProvider

.when('/', '/enter/paper/1/1/')

.when('/enter', '/enter/paper/1/1/')

.otherwise('/enter/paper/1/1/');

$stateProvider

.state('main', {

url: '/',

templateUrl: 'main.html',

controller: 'MainCtrl',

controllerAs: 'mn'

})

.state('main.enter', {

url: '^/enter',

template: '

})

.state('main.enter.paper', {

url: '^/enter/paper/:page/:sort/:audit_status/:audit_time_start/:audit_time_end/:id/:name/:publisher_id/:school_stage_id/:subject_id/:grade_id/:volume_id/:chapter_id',

templateUrl: 'enter_paper.html',

controller: 'EnterPaperCtrl',

controllerAs: 'ep'

});

}

// EnterPaperCtrl

var params = {

page: 1,

sort: 1,

audit_status: 8,

// ... 省略其他参数

};

function search() {

return EnterService.search(params).then(function(data) {

// 省略其他代码

// 使用 $state.go 可以实现修改 query 而不用刷新页面

$state.go('.', params, {notify: false});

});

}

结果是

无法进入 main.enter.paper ,原因就是设置了很多 stateParams ,但是没有给默认值, 因为那些都是可选参数。

我的期望是

最好设置路由的时候只需要这样设置

// config

$urlRouterProvider

.when('/', '/enter/paper/1/1')

.when('/enter', '/enter/paper/1/1')

.otherwise('/enter/paper/1/1');

$stateProvider

.state('main.enter.paper', {

url: '^/enter/paper/:page/:sort', // 最好是其他可选参数不用预先写在这里

templateUrl: 'enter_paper.html',

controller: 'EnterPaperCtrl',

controllerAs: 'ep'

});

// EnterPaperCtrl

var params = {

page: 1,

sort: 1,

audit_status: 8,

// ... 省略其他参数

};

function search() {

return EnterService.search(params).then(function(data) {

// 省略其他代码

// 使用 $state.go 可以实现修改 query 而不用刷新页面

$state.go('.', params, {notify: false});

});

}

还有之所以不用 location.href 是因为这个会刷新页面,不知各位有什么好办法?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值