我有一个包含许多不同过滤器的搜索页面。单击过滤器会将其附加到URL。做这样的事情:
var params = { color: blue, shape: circle};
$location.search(params);
可能没有过滤器,一个过滤器或十几个。这取决于用户点击的内容。但是当我改变状态时,网址会丢失参数。除根之外的所有状态都没有分配给它的URL。并且很难对网址的内容进行硬编码,因为它完全取决于用户点击的过滤器。
即使切换状态,url / params是否有办法保持不变?
答案 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;
});