0

次のような状態がいくつかあります。

.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 に関連付けられたカスタム URL を作成できるようにしたいと考えています。たとえば、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ようなルーティングの設定を開始する方法さえわかりませんか?

4

1 に答える 1

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 の違いがわかることを前提としています。それができない場合は、最初に ID を確認するように更新してから、練習が見つからない場合は一意の URL を確認することができます。

于 2016-06-06T18:31:58.977 に答える