如何使用AngularJS路由器在多个状态下保持params相同?

时间:2014-09-09 17:11:29

标签: javascript angularjs angular-ui-router

我有一个包含许多不同过滤器的搜索页面。单击过滤器会将其附加到URL。做这样的事情:

var params = { color: blue, shape: circle};
$location.search(params);

可能没有过滤器,一个过滤器或十几个。这取决于用户点击的内容。但是当我改变状态时,网址会丢失参数。除根之外的所有状态都没有分配给它的URL。并且很难对网址的内容进行硬编码,因为它完全取决于用户点击的过滤器。

即使切换状态,url / params是否有办法保持不变?

1 个答案:

答案 0 :(得分:0)

通常情况下,$ location.search(params)会在页面更改后保持参数不变......

如何重定向到不同的路线?

如果您使用

<a href='someLocation'> 
然后你的参数将被覆盖。但是如果你使用$ location.path(...)

$scope.goToSomeLocation = function(){
    $location.path('/someLocation'); 
}

<a ng-click='goToSomeLocation()'> 

那么你的参数应保持不变。

正如评论中所指出的,您也可以将参数保存在服务中:

    var myApp = angular.module('myApp', []);

    myApp.service('MyService', function () {
        var parameters= 'test';
        return { 
            getParameters: function(){ return parameters},
            setParameters: function(input){ parameters= input;}
        };
    });

    myApp.controller('FirstCtrl', function($scope, MyService) {
        $scope.parameters= MyService.getParameters();
    });

    myApp.controller('SecondCtrl', function($scope, MyService) {
        $scope.parameters= MyService.getParameters;
    });