Javascript 当下拉列表更改时,AngularJS更改URL中的参数值

Javascript 当下拉列表更改时,AngularJS更改URL中的参数值,javascript,angularjs,Javascript,Angularjs,我有以下网址: 我有一个季度下拉列表,包含全年的季度:全部,第一季度,第二季度,第三季度,第四季度 当用户更改下拉列表的值时,我有一个方法集\u selected\u quarter调用 我如何从以下位置更改url: 致: 当用户将下拉列表从Q2更改为All时 我附上了该页的辩护词: .when('/mainpage/:client_id/:publisher_id/:is_agency/:agency_id?/:filter_year?/:filter_quarter?/:filter_

我有以下网址:

我有一个季度下拉列表,包含全年的季度:全部,第一季度,第二季度,第三季度,第四季度

当用户更改下拉列表的值时,我有一个方法集\u selected\u quarter调用

我如何从以下位置更改url:

致:

当用户将下拉列表从Q2更改为All时

我附上了该页的辩护词:

.when('/mainpage/:client_id/:publisher_id/:is_agency/:agency_id?/:filter_year?/:filter_quarter?/:filter_advertiser?/', {
                templateUrl: '/partials/mainpage.html',
                controller: 'MainPageCtrl',
                title:'mainpage'               
                }

查看绑定到
的变量,使用
ng model
选择
下拉列表,然后使用
$location
根据需要更改URL

<select ng-model="quarter">
    <option value="all">All</option>
    <option value="q1">Q1</option>
    <option value="q2">Q2</option>
    <option value="q3">Q3</option>
    <option value="q4">Q4</option>
</select>

问题是“/2063/23/true/1099/2014/”是动态的,如果每个页面上的url都在更改,我如何检索它并更改“quarter”…您可以通过向控制器中注入$routeParams来读取当前url参数。执行
console.log($routeParams)
查看设置了哪些参数。如果每个页面上都有此功能,我建议您创建一个指令。那么我需要根据这些参数重新创建url吗?如何防止页面刷新?是的,您需要重新创建URL。
$route
将更改,您将使用新路由重新初始化控制器,但如果您使用HTML5模式,则页面不应刷新。如果您不想重新初始化控制器,我将使用
搜索
(请参阅$route documentation)。虽然它工作正常,但仍会刷新页面,我怎么能忽略它?
$scope.$watch('quarter', function(quarter) {
    if (!quarter) {
        return;
    }
    $location.path('/2063/23/true/1099/2014/' + quarter + '/0/');
});