2016-11-26 59 views
0

我正在開發AngularJS 1(+ Ionic + ui-router)單頁應用程序。除此之外,該應用可以讓'CRUD'的員工和公司。AngularJS:在單獨的視圖中編輯「pick-one」字段

我很困惑於「編輯員工」頁面。此頁面顯示名字和姓氏的字段,並有一個按鈕用於選擇員工工作的公司。點擊按鈕後,會打開一個新視圖,列出所有現有公司。然後用戶可以選擇一個以將其分配給員工,然後返回到前一個屏幕(員工編輯),然後顯示(只讀)公司名稱。

我的問題是,當回到「編輯員工」視圖時,其控制器被重新加載,因此對名字和姓氏所做的更改會丟失,因爲控制器會從數據庫加載員工信息開始。

總結會發生什麼:

  1. 用戶從數據庫

  2. 編輯控制負載的員工數據打開編輯員工的觀點,並填充

  3. 用戶改變了第一的觀點名稱改爲新值(例如從'John'到'Allan')

  4. 用戶單擊「ch OOSE公司「按鈕

  5. 公司列表視圖中打開,並顯示公司名單

  6. 用戶通過作爲服務選擇一個公司在列表

  7. 所述控制器存儲它」當前公司「全局變量,並返回到編輯員工視圖

  8. 編輯控制器再次啓動,並重新從數據庫中加載數據,並用John重新填充名字。它還讀取公司全局變量以顯示其名稱。

  9. 結果改變爲「艾倫」丟失:-(

所以我的問題是:什麼是管理這種類型的編輯好的做法

而且,如果?你有更好的方式將公司從列表視圖轉移到編輯員工視圖,而不是使用全局變量,我將不勝感激。

btw,我想在開始之前不保存員工更改公司名單,因爲我想讓用戶最終完全取消他的編輯。

非常感謝您的幫助

+0

使用選擇框讓用戶直接從編輯員工表單中選擇一個公司。 –

+0

感謝您的回答。這實際上是我首先做的,但我想添加增量搜索,並讓用戶創建一個新公司。所以對於GUI設計的原因,我寧願有一個單獨的視圖。請提供其他建議嗎?再次感謝(順便說一句,增量搜索可以與選擇工作,但沒有好看的離子窗口小部件) – bfredo123

+0

當離開編輯員工頁面選擇一個公司,保存其狀態(即員工對象作爲例如,在服務領域內部)。當您從公司代答頁進行打包時,請從保存在服務中的狀態中恢復狀態。不要使用全局變量來存儲公司。將其存儲在相同的服務中,或將其作爲狀態的參數傳遞。 –

回答

0

要堅持表單的狀態,您可以使用服務。當編輯表單作用域被一些未​​保存的更改銷燬時,只需將此數據保存到服務中即可。在此服務內部,您甚至可以將其存儲到本地存儲以在頁面刷新後保留數據。

但更好的方法是有簡單的下拉編輯表單。如果信息太多,你可以使用模態或類似的。

+0

謝謝!對你和JB Nizet的問題:當控制器加載時,如何區分第一次加載或下一次? (第一次=我們需要從數據庫加載數據;下次=我們需要檢索tmp數據) – bfredo123

+0

@ bfredo123使用狀態參數。您也可以在單一狀態下執行所有這些操作,只顯示/隱藏用戶編輯部分和公司選擇部分。 –

+0

你只需要檢查這項服務。如果它包含特定ID的未保存表單,則使用它,否則 - 請求分貝。但不要忘記提交後無效服務 –

0

有一對夫婦,你可以處理這種情況的方法:

  1. 既然你提到你正在使用離子insted的打開一個新的觀點所展現的公司列表使用Ionic Modal的,這樣你就可以處理所有內容都在同一個控制器中,因此不需要保存全局變量
  2. 您可以收聽ui-router的狀態更改事件,並在員工數據頁面上檢查發件人是否是公司名單,如果是,則避免執行api致電獲取員工詳細信息

我建議使用Ionic Modal

+0

謝謝大家,我認爲,通過所有這些建議,我將能夠得到一些工作! – bfredo123

相關問題