Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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
Angularjs 使用ui路由器的动态参数_Angularjs_Angular Ui Router - Fatal编程技术网

Angularjs 使用ui路由器的动态参数

Angularjs 使用ui路由器的动态参数,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我正在使用ui路由器开发一个带有angular的搜索应用程序 要求: 搜索表单的字段太多,所有字段都必须是可选的 用户应与其他用户共享显示结果列表页面的URL。(因此我需要使用querystring) 所以我可以有像这样的网址 path/to/url/list?p=123&v=876 path/to/url/list?c=yes&a=true&p=123 path/to/url/list?z=yes&c=yes&a=true&p=123

我正在使用
ui路由器
开发一个带有
angular
的搜索应用程序

要求:

  • 搜索表单的字段太多,所有字段都必须是可选的
  • 用户应与其他用户共享显示结果列表页面的URL。(因此我需要使用querystring)
所以我可以有像这样的网址

path/to/url/list?p=123&v=876

path/to/url/list?c=yes&a=true&p=123

path/to/url/list?z=yes&c=yes&a=true&p=123

path/to/url/list?z=yes&v=876&a=true&p=123

还有无尽的组合。我知道我可以使用$location.search()获取json格式的所有参数。太好了!但问题是如何使用
uirouter
定义url状态?明确定义url中的所有参数不是一个选项。我读过很多帖子,但没有找到具体的答案。

如果你从
$location
获取参数,你不需要在state中明确定义它们。

如果你从
$location
获取参数,你不需要在state中明确定义它们。

我认为,最好的方法是使用$stateProvider配置的“resolve”属性:

$stateProvider.state('mystate', {
  // Some code here
  resolve: {
     queryData: ['$location', ($location) => {
       $location.absUrl(); // Contains your full URI
       return true;
     }]
  }
});
这是一种初始化。之后,ui路由器将剪切URI,但您将存储所需的数据。当用户在浏览器地址输入中直接传递URI时,这种情况也可以正常工作


此外,您还可以尝试将$urlRouterProvider设置为$urlMatcher,但这将更加困难。

我认为,最好的方法是使用$stateProvider配置的“resolve”属性:

$stateProvider.state('mystate', {
  // Some code here
  resolve: {
     queryData: ['$location', ($location) => {
       $location.absUrl(); // Contains your full URI
       return true;
     }]
  }
});
这是一种初始化。之后,ui路由器将剪切URI,但您将存储所需的数据。当用户在浏览器地址输入中直接传递URI时,这种情况也可以正常工作


此外,您还可以尝试将$urlRouterProvider设置为$urlMatcher,但这将更加困难。

定义了一个参数-查询。把所有参数都放进去。我怎样才能在一个参数中传递所有搜索参数?在base64中编码参数可能是一个合理的选择?如果您从
$location
获取参数,则无需在中定义它们state@AlekseyL. 我会试试。定义了一个参数-查询。把所有参数都放进去。我怎样才能在一个参数中传递所有搜索参数?在base64中编码参数可能是一个合理的选择?如果您从
$location
获取参数,则无需在中定义它们state@AlekseyL. 我试试看。