2017-04-05 71 views
0

使用mean.js:角路由器 - 使用抽象狀態來訪問服務

我有一個很大的應用程序,被說,辦公室劃分。每個辦公室都以相同的方式訪問同一個應用程序,但辦公室的員工只能訪問與該辦公室有關的信息。公司管理員可以完全訪問應用程序,在辦公環境之間切換。需要注意的是,辦公室員工沒有用戶帳戶(沒有登錄/身份驗證),只有管理員的管理員帳戶。

我探索通過以下方式做:

我創建與存儲在辦公室範圍內,進行API調用時,它傳遞到後端服務的訪問模塊。這是在應用程序從配置文件啓動時設置的。

這很好,但我需要允許管理員切換辦公環境。我用一個鏈接<a ui-sref="Context({ officeID: 'x' })(在導航欄下拉列表中,所以可訪問從狀態)來訪問路由器角:

.state('Context', { 
     url: '/Context/:officeID', 
     controller: 'ContextController', 
     controllerAs: 'vm' 
     }); 

這傳遞officeID到ContextController,這將設置ContextService.officeID變量。目前,我相信我會通過ContextController進行api調用來刷新當前狀態的數據以反映當前的情況。不知道該怎麼做。

我覺得我有一些在這裏的選項,這我不能確定如何實現:

  • 我可以讓Context狀態的抽象,和所有其他國家一個孩子,但似乎笨重。如果這是正確的,我如何告訴當前狀態刷新它的數據?
  • 我可以進入Context狀態,設置ContextService.officeID,並立即重定向回到之前的狀態,它在進入時應該使用新的上下文進行api調用。如果這是正確的,我該如何正確執行重定向?

我可以放棄這是如何完成的,但我不知道從哪裏開始。任何建議是受歡迎的。

+1

所以現在的問題是如何來的路線變化反應? – Yiou

回答

0

我想出了一些更優雅的感覺。

我仍然使用Context路線。我已將ContextService包含在所有角度模塊中,並在需要設置上下文時調用它。 我試圖重定向使用$location.path(...),這是一個主要的頭痛。使用$state.go($state.previous.state.name)工作一種享受。

更妙的是,如果你使用的是依賴於做出決議的路線,你還可以使用重定向$state.go($state.previous.state.name, $stateParams);