2016-12-29 128 views
0

我正在将我的应用程序从使用简单的Angular路由器服务转换为UI-Router。我有一个来自搜索字段的参数。在Angular提供的路由器服务中,如果我们搜索空的输入字段,由于其他功能,URL被重定向到主页,但是在UI-Router中,它转到这个URL http://localhost:3000/#/resultPage//1URL中的UI路由器空参数

我试图用正则表达式的参数,但它没有奏效。我现在用的代码波纹管

   $urlRouterProvider.otherwise('/'); 
 

 
       .state("resultpage", { 
 
        url: "/resultPage/{searchParameter:[0-9a-zA-Z]+}/{pageParameter:[0-9]}", 
 
        templateUrl: "templates/resultpage.html", 
 
        controller: "resultController", 
 

 
       })

提到我怎样才能确保如果任何paramters的省略形式网址URL重定向到主页?

回答

0

传递变量而不是直接值。 例如,url: "/resultPage/:paramOne/:paramTwo",这里是paramOneparamTwo是从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]} })" 
+0

感谢您的回复。我试图使用该代码,但Angular给我的语法错误。不知道我缺少什么 – user3932437

0

你或许应该使用查询参数而不是这个用例。检查文档的第一段:https://ui-router.github.io/docs/0.3.1/#/api/ui.router.util.type:UrlMatcher

+0

我不确定你使用查询参数的意思。该链接不会谈论我的特殊问题。你能否进一步阐述? – user3932437

+0

这里有一个更好的链接:https://github.com/angular-ui/ui-router/wiki/URL-Routing,向下滚动到“查询参数”部分。如果您希望URL匹配不那么严格,那么它们基本上只是您可以使用的较少结构化的参数。 –