2016-06-06 156 views
0

我有一些國家看起來像這樣:自定義路線(URL快捷方式)

.state('patient.patient-login', { 
    abstract: true, 
    template: '<ui-view></ui-view>' 
}) 
.state('patient.patient-login.practiceID', { 
    url: "/patient-login/:practiceID", 
    scope: true, 
    templateUrl: "views/patient-login.html" 
}) 

問題是:practiceID變量可能會很長,而不是用戶友好的,我想給一個用戶能夠創建一個與練習ID綁定的自定義網址,例如在Facebook上創建一個帳戶時,您可以使用以下配置文件URL:http://facebook.com/123456789但您可以將其更改爲http://facebook.com/whateveryouwant

因此,本質上我想完成這樣的事情:

POINTER 
http://domain.com/companyname > http://domain.com/#/patient-login/companyid 

ANOTHER EXAMPLE 
http://domain.com/ladentist > http://domain.com/#/patient-login/-85k3jfGEioltold 

我能夠讓用戶設置他們的unique url,但我不知道如何甚至開始設置這樣的路由?

+0

請考慮在您的網站上設置路線,例如domain.com/link/:slug。在您的應用程序的某個位置,您將在簡寫和完整URL之間建立映射關係,並且您可以讓此控制器處理路由。 –

回答

0

不確定項目的其餘部分是什麼樣子,但是您可以更新狀態以處理resolve屬性中的ID和唯一URL。這大致看起來是這樣的:

.state('patient.patient-login.practiceID', { 
    url: "/patient-login/:practice", 
    scope: true, 
    templateUrl: "views/patient-login.html", 
    resolve: { 
    patientData: [ 
     '$stateParams', 
     'practiceSvc', // replace practiceSvc with however you are fetching data from your server 

     function($stateParams, practiceSvc) { 
     // check if the :practice param is an id or unique url 
     if ($stateParams.practice === /* id check */) { 
      // Call to API - get practice by ID 
      return practiceSvc.getByID($stateParams.practice); 
     } else { 
      // Call to API - get practice by unique url 
      return practiceSvc.getBySlug($stateParams.practice); 
     } 
     } 
    ] 
    } 
}) 

這個假設你可以分辨唯一的url和id之間的區別。如果你無法做到這一點,你可以更新它來檢查身份證,如果沒有找到任何練習,那麼就是唯一的網址。

+0

我怎麼能從根網址(例如:http:// domain.com/id'和'http:// domain.com/patient-login/id'來做到這一點? – Jordash

+0

如果您的意思是'http:// domain .com/id'到'http://domain.com /#/ patient-login/id'你可能想要通過服務器端的通配符路由來處理。我只是不確定這是否會干擾角路線(儘管你可以檢查#並且可以) 另一個選擇是創建一個與你的主'index.html'文件相同的子文件夾,並在其中放置一個新的index.html文件,將只處理患者登錄的重定向:'login/index.html'。在'login/index.html'裏面將會是一個重定向函數,它只是查看url並將其轉換爲角度路由 – csbarnes

+0

這是一個好主意,我如何讓子文件夾變成動態的,URL需要基於公司名稱例如:http:// doma in.com/companyname /' – Jordash