冉冉说
ok, 我找到一个可以实现的方法,贴代码如下:$stateProvider .state('main', { url: '/', templateUrl: 'main.html', controller: 'MainCtrl', controllerAs: 'mn' }) .state('main.enter', { url: '^/enter', template: '<div ui-view class="enter"></div>' }) .state('main.enter.paper', { url: '^/enter/paper/:page?sort=1&per_page&publisher_id&school_stage_id&subject_id&volume_id&grade_id&type_id&level&year&province_id&area_id&city_id&time_start&time_end', templateUrl: 'enter_paper.html', controller: 'EnterPaperCtrl', controllerAs: 'ep' });就是在定义 url 的时候,后面先定义可选参数,'^/enter/paper/:page?sort=1&per_page&publisher_id,这样,在进入 'main.enter.paper' 后,地址栏可以看到 url 是 /enter/paper/1?sort=1&per_page=10,因为我进入 EnterPaperCtrl 就更新了一次 url,更新参数就是 {page: 1, sort: 1, per_page: 10},然后如果选中出版社,查询后更新 url,var params = { page: 1, sort: 1, per_page: 10, publish_id: '38dfjdfkj889'};$state.go('.', params, {notify: false});可以看到 url 将更新为 /enter/paper/1?sort=1&per_page=10&publish_id=38dfjdfkj889