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. 我试试看。