2014-03-27 54 views
4

我在我的app.js文件中有以下2條路由,出於某種原因,我不知道當我嘗試導航到/clients/new-invoice時,我看到/clients/:clientID路由和模板。我可以轉到正確的頁面的唯一方法是刪除/clients/:clientID路線。AngualrJS routeProvider路由到錯誤的模板

另外我注意到,這只是在我將:clientID添加到下面的路線後纔開始發生。

有人能幫助我告訴我什麼,我在這裏做錯了嗎?

$routeProvider.when('/clients/:clientID', 
      {  templateUrl: 'templates/client-profile-view.html', 
        controller: 'ClientsController', 
        title: 'Client Profile', 
        data: { 
        auth: true, 
        plevel: [5] 
        }     
      });  


    $routeProvider.when('/clients/new-invoice', 
      {  templateUrl: 'templates/new-invoice.html', 
        controller: 'InvoicesController', 
        title: 'New Invoice', 
        data: { 
        auth: true, 
        plevel: [5] 
        }     
      }); 
+0

我猜測這裏,那/客戶/新聲音被$ routeProvider解釋爲/客戶/新 - 搜索一個ID爲'new-voice'的客戶端。 你可以爲你的詳細視圖添加一個新的路線例如:/ clients/details /:clientID – nilsK

+0

@nilsK嗯,我想到了這個解決方案,但我不能相信這是在AngularJS中克服這個問題的唯一方法,我意味着如果您的客戶堅持要有/ clients /:clientID來查看客戶資料和/客戶/新發票的新發票? – MChan

回答

7

你只需要改變順序,把/clients/:clientID/clients/new-invoice後。訂單很重要。所有的正則表達式路徑應該在靜態路徑之後定義。

0

嘗試propertie caseInsensitiveMatch

$routeProvider.when('/clients/new-invoice', 
{  templateUrl: 'templates/new-invoice.html', 
     controller: 'InvoicesController', 
     caseInsensitiveMatch: true, 
     title: 'New Invoice', 
     data: { 
     auth: true, 
     plevel: [5] 
     }     
}); 

我不知道它的工作原理

或只是在第一位置添加這條路線

0

我有一個同事,誰執行這個討論我們的routeProvider。如我所想:沒有某種preg匹配機制(我的參數是一個整數/ uuid或像'new-voice'這樣的字符串?),這不會起作用。想想這個例子:

/客戶/:clientID的=>讓你的客戶端的詳細

/客戶/:clientID的/新發票=>獲得特定客戶新的發票

/客戶/新-invoice =>獲取所有客戶的新發票

但是,如果您被迫按照您的示例中所述的路由,您必須找到另一個解決方案,例如preg匹配參數。

希望我能幫助一點, 問候

2

您需要先使用更具體的比賽,而去年,通用匹配:

$routeProvider.when('/clients/new-invoice', 
     {  templateUrl: 'templates/new-invoice.html', 
       controller: 'InvoicesController', 
       title: 'New Invoice', 
       data: { 
       auth: true, 
       plevel: [5] 
       }     
     }) 

.when('/clients/:clientID', 
     {  templateUrl: 'templates/client-profile-view.html', 
       controller: 'ClientsController', 
       title: 'Client Profile', 
       data: { 
       auth: true, 
       plevel: [5] 
       }     
     });