Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.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
Javascript AngularJS ui路由器:带参数和不带参数的URL_Javascript_Angularjs_Angular Ui Router - Fatal编程技术网

Javascript AngularJS ui路由器:带参数和不带参数的URL

Javascript AngularJS ui路由器:带参数和不带参数的URL,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我目前正在一个SPA上工作,用于管理中的用户身份。我现在在为AngularUI路由器中的状态定义URL时遇到问题 以下是我到目前为止得出的结论: .state('identity', { url: '/identity/:serialNumber', templateUrl: 'app/components/Identity/identity.html', controller: 'identityController' })

我目前正在一个SPA上工作,用于管理中的用户身份。我现在在为AngularUI路由器中的状态定义URL时遇到问题

以下是我到目前为止得出的结论:

    .state('identity', {
        url: '/identity/:serialNumber',
        templateUrl: 'app/components/Identity/identity.html',
        controller: 'identityController'
    })
    .state('addidentity', {
        url: '/identity/add',
        templateUrl: 'app/components/Identity/identityAdd.html',
        controller: 'identityController'
    });
第一个状态(“标识”)传递URL参数“serialNumber”。这工作正常,我可以访问“identityController”中的参数

我希望通过第二种状态(“addidentity”)实现的是,对于访问“/identity/add”的特殊情况,我希望重定向到不同的模板(将来可能使用不同的控制器)

然而,这是行不通的。只有第一个州这样做。第二个问题被忽略了。据我所知,问题是即使我访问“/identity/add”,这个URL在技术上仍然符合第一种状态。在这种情况下,状态参数“serialNumber”将简单地设置为“add”

我想我在理解ui路由器到底是如何工作的方面有问题。 在ui路由器中是否有不同的方法来处理这两个URL

也许在我思考这个问题的方式中有一些根本性的错误。任何帮助都将不胜感激:)

问候,


Timo

您可以使用正则表达式验证url:

例如,如果序列号是整数,则以下内容将使url仅与整数匹配:

.state('identity', {
    url: '/identity/{serialNumber:[0-9]{1,8}}',
    templateUrl: 'app/components/Identity/identity.html',
    controller: 'identityController'
})
.state('addidentity', {
    url: '/identity/add',
    templateUrl: 'app/components/Identity/identityAdd.html',
    controller: 'identityController'
});

您可以使用正则表达式验证url:

例如,如果序列号是整数,则以下内容将使url仅与整数匹配:

.state('identity', {
    url: '/identity/{serialNumber:[0-9]{1,8}}',
    templateUrl: 'app/components/Identity/identity.html',
    controller: 'identityController'
})
.state('addidentity', {
    url: '/identity/add',
    templateUrl: 'app/components/Identity/identityAdd.html',
    controller: 'identityController'
});

你能提供更多的文件吗?特别是html文件和控制器控制器控制器中除了
console.log($stateParams.serialNumber)之外没有其他内容。我还没有开始实现更多功能。通过更改映射,它将像“/identity/find/:serialNumber”一样工作。您能提供更多文件吗?特别是html文件和控制器控制器控制器中除了
console.log($stateParams.serialNumber)之外没有其他内容。我还没有开始实现更多的功能。通过更改映射,它将像“/identity/find/:serialNumber”一样工作。就是这样!非常感谢。因为serialNumber始终是一个整数值,所以它工作得很好。就是这样!非常感谢。因为serialNumber始终是一个整数值,所以它可以完美地工作。