Javascript 如何强制URL参数出现在ui路由器的URL中?
我有一个简单的users.list状态,配置如下:Javascript 如何强制URL参数出现在ui路由器的URL中?,javascript,angularjs,router,angular-ui-router,Javascript,Angularjs,Router,Angular Ui Router,我有一个简单的users.list状态,配置如下: $stateProvider.state('users.list', { url: '/users/list?type', reloadOnSearch: false, templateUrl: 'templates/users/list.html', params: { type: { value: 'all' }, }, }); 我试图强制类型参数始终出现在URL中。当我点击ui-sref指令生成的链接时,效果
$stateProvider.state('users.list', {
url: '/users/list?type',
reloadOnSearch: false,
templateUrl: 'templates/users/list.html',
params: {
type: { value: 'all' },
},
});
我试图强制类型参数始终出现在URL中。当我点击ui-sref
指令生成的链接时,效果非常好。当我直接在浏览器中访问/users/list
时,就会出现问题。尽管参数已正确配置为$state.params
,但它不会出现在URL中
通常这不是一个大问题,但当你需要使用季节参数时,它就会成为一个问题。例如,想象一下,默认情况下,我只想列出从过去一周到现在注册的新用户。我可以从设置一个param,默认值为
今天-7天,每天都会不同
因此,当用户在没有参数的情况下与某人共享url时,可能会引起很多麻烦,比如:“嘿,帮我删除顶部的第三个,这是作弊。”。如果收到消息的人决定在另一天打开url,列表将不同,你可以看到我担心什么
我找不到任何可以帮助我的东西,所以我在这里问。有人这样做过吗?可行吗?有
我们只需要使用设置壁球:
.state('users.list', {
url: '/users/list?type',
reloadOnSearch: false,
templateUrl: 'templates/users/list.html',
params: {
type: {
value: 'all',
squash: false,
},
},
});
检查一下
有关更多详细信息,请遵守以下内容:
。否则()
设置:
//$urlRouterProvider.otherwise('/users/list');
$urlRouterProvider.otherwise(function($injector, $location) {
var state = $injector.get('$state');
state.go('users.list');
return $location.path();
});
在此处查看并阅读更多详细信息:
/users/list
,因此您可以看到URL中没有类型参数:我修复了该plunker,扩展了答案,并提供了指向更多详细信息的链接。希望能有点帮助;)是的,这正是我想要的行为!唯一的问题是,由于解决方案涉及到另一个事件,而且我想在许多州这样做,我必须找出一些方法使这对所有州都有效。事实上,我希望这是一些我找不到的配置选项。。。