Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何强制URL参数出现在ui路由器的URL中?_Javascript_Angularjs_Router_Angular Ui Router - Fatal编程技术网

Javascript 如何强制URL参数出现在ui路由器的URL中?

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指令生成的链接时,效果

我有一个简单的users.list状态,配置如下:

$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();
});
在此处查看并阅读更多详细信息:


我建议只需在URL中创建另一个不带状态参数的状态,使用oneter函数重定向到已填充所需参数的状态。

我认为它不起作用。。。我要做的是,使类型值自动转到URL,即使直接访问URL也是如此。默认情况下,我将您的plunker更改为重定向到
/users/list
,因此您可以看到URL中没有类型参数:我修复了该plunker,扩展了答案,并提供了指向更多详细信息的链接。希望能有点帮助;)是的,这正是我想要的行为!唯一的问题是,由于解决方案涉及到另一个事件,而且我想在许多州这样做,我必须找出一些方法使这对所有州都有效。事实上,我希望这是一些我找不到的配置选项。。。