簡體   English   中英

AngularJS UI路由器:帶參數和不帶參數的URL

[英]AngularJS ui-router: URL with params and without params

我目前正在使用SPA來管理用戶身份。我現在在定義角度ui路由器中的狀態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-router中有沒有辦法以不同方式處理這兩個URL?

我對此的想法也許根本上有問題。 任何幫助,將不勝感激 :)

問候,

蒂莫

您可以使用正則表達式驗證網址: https : //github.com/angular-ui/ui-router/wiki/URL-Routing#regex-parameters

例如,如果您的序列號是整數,則以下內容將使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'
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM