【问题标题】:Url with multiple optional parameters using stateProvider angularjs使用 stateProvider angularjs 具有多个可选参数的 URL
【发布时间】:2016-02-28 04:54:13
【问题描述】:

正如Can angularjs routes have optional parameter values?所说 和AngularJS: Routing with URL having optional parameters 带有参数名称的问号? 应该使它成为可选的。它对我没有帮助。

var app = angular.module('app', ['ui.router','ngRoute']);

app.config(function ($urlRouterProvider, $stateProvider) {
    $urlRouterProvider.otherwise('/a');
    $stateProvider.state('a', {
        url: '/a',
        templateUrl: 'views/a.html'
    }).state('b', {
        url: '/b/:code?/:d?',
        templateUrl : 'views/b.html'
    })
});

这个网址http://localhost:xx/kk/#/b/1/2 对我来说很好用。 但是http://localhost:xx/kk/#/b(没有任何参数)和http://localhost:xx/kk/#/b/1对我不起作用...

你可以看到我正在使用 $stateProvider 和 ui-router。我不想切换到$urlRouteProvider

【问题讨论】:

    标签: angularjs angular-ui-router angular-ui state


    【解决方案1】:

    a working plunker

    我们需要一个名为 params : {} 的设置,它可以处理可选参数:

     params: {
        code: {squash: true, value: null},
     }
    

    所以状态定义是

    .state('b', {
        url: '/b/:code/:d',
        templateUrl : 'views/b.html',
        params: {
          code: {squash: true, value: null},
          d   : {squash: true, value: null},
        }
    })
    

    这些将起作用:

    <a href="#/b">
    <a href="#/b/code1">
    <a href="#/b/code22">
    <a href="#/b/code333/d4">
    

    查看这些以获取更多详细信息和示例:

    这里还有更多魔法:

    【讨论】:

    • 抱歉,我稍微编辑了我的问题。如果您不介意,请编辑答案,否则我会在测试并成功后做
    • 我为您创建了一个 plunker plnkr.co/edit/MXb3Eklfrw8fWRuPPk1u?p=preview,用所有细节扩展了答案 - 加上链接中的其他示例......希望对您有所帮助 ;)
    • 完美。即使使用localhost:xx/yy/#/state1/1/2/substate1/2/3... 你认为角度可以允许选择参数,如 ttp://localhost:96/angle/#/b/d1 = > 在这里我想离开code 并给出价值d
    • 嗯,是的,这在我的链接中有所涵盖......但似乎你想要越来越多;)并且不想接受 - 虽然我确实回答了你的问题,对吗?好吧,如果您有新问题,请提出新问题。你会同意吗?顺便说一句,你可以在这里找到我喜欢stackoverflow.com/a/30230421/1679310 的另一种方法,这是如何使用限制stackoverflow.com/a/31837507/1679310
    • 抱歉,我在您上次编辑后(1 小时前)立即点击了接受,不幸的是,我的连接当时无法正常工作,但我后来注意到(就在收到您的最后评论之前 :)。是的,我应该问另一个问题,我最终想要实现的是应用程序的每个状态(在 ui 上的每个事件之后)的唯一 url,因此我们可以为测试团队提供所有链接,测试人员可能没有其他场景跨度>
    猜你喜欢
    • 1970-01-01
    • 2013-06-09
    • 2019-03-11
    • 2013-03-26
    • 2016-09-10
    • 1970-01-01
    • 2016-09-16
    • 2015-06-06
    • 2017-11-10
    相关资源
    最近更新 更多