2016-09-08 52 views
0

我目前正在與多個模塊的angularjs應用程序。每個模塊都有自己的模板和控制器。 讓我們來說appModule,contactModule和aboutModule。Angularjs路由與多個模塊

我目前使用基於url的ng-switch在屏幕之間導航。問題是,每次在屏幕之間切換時,我的控制器都會重新初始化,並且正在進行服務調用以獲取數據。我只想在第一次看到屏幕時獲取數據。

基本上,我想知道如果我在正確的路徑或有沒有更好的方式來使用routeProvider做到這一點?

+0

我假定你的意思是你不想去的後端不止一次的數據。在這種情況下,您可以將數據保存在角度服務中,並且每次初始化控制器時,都可以調用服務以查看數據是否存在,如果存在,則返回該數據,如果不存在,則可以獲取來自後端的數據,並將其保存在服務中。 – holtc

+0

實際上,它不是我不想去後臺去獲取數據。我也想在用戶回到屏幕時恢復屏幕的狀態。 –

回答

0

有幾種方法解決這個問題:

  1. 使用$資源和HTTP緩存緩存get請求。

  2. 委託將數據提取到服務或工廠,並將響應存儲在該服務中,將其注入到控制器,並將數據綁定到具有存儲響應的屬性。

  3. 使用ng-show/ng-hide代替開關,所以控制器保持實例化。

  4. 使用與UI路由器粘狀態exras https://christopherthielen.github.io/ui-router-extras/#/home

+0

正在使用ng-switch的正確方法嗎?或者我應該使用ngRoute? –

+0

如果你想在路線之間導航,你應該使用ngRoute,即'myapp.com/contacts'和'myapp.com/about'。但僅此一點就不能解決控制器重新獲得實際數據和重新獲取數據的問題。 – Amygdaloideum

+0

你是對的,我改變我的邏輯使用ngRoute。它仍然不能解決問題。問題不僅僅在於獲取數據。當我在TextBox中輸入一些文本時,如果我移出標籤並再次返回。輸入的文字消失。我想我的問題應該是,我怎樣才能維持屏幕之間的導航狀態。 –