2015-12-26 90 views
1

我正在構建使用標籤樣式導航的AngularJS應用程序(使用router-ui)。在用戶頁面,例如,將有以下選項卡:解決父狀態不會在每個子狀態更改上運行

  • 上市(永遠是主要的標籤,並列出所有用戶在此選項卡上選擇用戶,其餘的將被前來active
  • 賬戶詳細
  • 聯繫方式

現在,我使用一種名爲entityIdPersistenceService記住在列表選項卡上選擇的用戶的ID。在我的路線中,我正在做類似下面的事情來通知所選userId的子選項卡(以便他們可以獲取必要的數據),但它看起來像很多重複的代碼。有沒有更好的方法將我選擇的ID提供給所有其他選項卡?

resolve: { 
     entityId: function(entityIdPersistenceService) { 
      return entityIdPersistenceService.getId(); 
     } 
    } 

它似乎很多重複的代碼。我將它添加到父狀態,但它看起來像代碼只在父狀態運行一次,而不是每個子狀態更改。

有沒有更好的方法做某事?理想的情況是ID喜歡把這個父狀態,有它在每條路線change.n運行

回答

1

與用戶相關的所有頁面應該有用戶ID在URL和路由參數的地方:

.state('user.accountDetails', { 
    url: "https://stackoverflow.com/users/{userId}/account", 
    templateUrl: "..." 
}) 
.state('user.contactDetails', { 
    url: "https://stackoverflow.com/users/{userId}/contact", 
    templateUrl: "..." 
}) 

在這種方式UserId將存儲在URL而不是服務和每個子控制器將能夠通過$ stateParams.userId

+0

感謝admax。當一個新用戶被創建時,我將如何處理?我怎麼能告訴我的其他路線(我正在使用'ui-router-extras'的'sticky'路線)他們處於「創建」模式?也許用戶ID可能是0或類似的東西? – Lock

+0

你可以爲新用戶做一些特殊的路線,例如'users/new/account'等 – admax

相關問題