URL中的UI路由器空参数
我正在将我的应用程序从使用简单的Angular路由器服务转换为UI-Router。我有一个来自搜索字段的参数。在Angular提供的路由器服务中,如果我们搜索空的输入字段,由于其他功能,URL被重定向到主页,但是在UI-Router中,它转到这个URL http://localhost:3000/#/resultPage//1。URL中的UI路由器空参数
我试图用正则表达式的参数,但它没有奏效。我现在用的代码波纹管
$urlRouterProvider.otherwise('/');
.state("resultpage", {
url: "/resultPage/{searchParameter:[0-9a-zA-Z]+}/{pageParameter:[0-9]}",
templateUrl: "templates/resultpage.html",
controller: "resultController",
})
提到我怎样才能确保如果任何paramters的省略形式网址URL重定向到主页?
传递变量而不是直接值。 例如,url: "/resultPage/:paramOne/:paramTwo"
,这里是paramOne
和paramTwo
是从ui-sref
传递的参数。 现在在控制器中添加$stateParams
来依赖注入来获取url参数。
app.controller('myCtrl', function($scope, $stateParams, $state){
if(!$stateParams.paramOne || !$stateParams.paramOne){
$state.go('', {}); // redirecting to '/'
}
})
现在,是时候从您想要访问的位置设置状态名称。
例如:
<a ui-sref="resultPage({paramOne: {searchParameter:[0-9a-zA-Z]+}, paramTwo: {pageParameter:[0-9]} })"
你或许应该使用查询参数而不是这个用例。检查文档的第一段:https://ui-router.github.io/docs/0.3.1/#/api/ui.router.util.type:UrlMatcher
我不确定你使用查询参数的意思。该链接不会谈论我的特殊问题。你能否进一步阐述? – user3932437
这里有一个更好的链接:https://github.com/angular-ui/ui-router/wiki/URL-Routing,向下滚动到“查询参数”部分。如果您希望URL匹配不那么严格,那么它们基本上只是您可以使用的较少结构化的参数。 –
感谢您的回复。我试图使用该代码,但Angular给我的语法错误。不知道我缺少什么 – user3932437