2013-09-23 85 views
2

我在使用ng選項和過濾器時遇到了問題。Angularjs:帶過濾器的ng選項,select元素的模型保留已過濾選項的值

問題是,當一個選項被過濾器刪除時,select元素的模型將保留已刪除選項的值。

這是plunker。我有兩個過濾器在ng選項集上工作。一個從選項列表中刪除重複項,一個刪除空值。按照以下步驟,您可以看到我所說的問題。

  1. 在「首選電子郵件」下拉列表中,選擇最後一個電子郵件選項'[email protected]'。
  2. 刪除「其他電子郵件」輸入框中的文本。

您現在可以看到,因爲「其他電子郵件」爲空,它不再是可用選項,並且下拉列表默認爲「請選擇首選電子郵件」。然而,select元素的模型仍然有分配給它的那個對象。

同樣的問題不同的上下文。

  1. 在「首選電子郵件」下拉列表中,選擇選項'[email protected]'。
  2. 現在刪除「Z」中的「[email protected]

一旦這樣做,在兩個輸入框的值(「電子郵件」和「家庭電子郵件」)變得重複,而第二其中一個('家庭電子郵件地址')會被篩選出可用的選項。然而,剛過濾的對象仍然分配給模型。

編輯:(?任何人都可以做的更好),我的解決方案

這裏(plunker)是我能拿出最好的。我是新來的角,不禁想到有更好的方法來做到這一點,我認爲這個解決方案是「壞」,但它的工作原理。

本質上,我通過過濾器引用範圍(this.contact)以及我正在使用的默認項目的名稱('default_email'或'default_phone')。如果篩選器從選項集中刪除項目,它將檢查它是否爲默認項目,如果是,則將缺省設置爲未定義。

我還添加了更多的代碼,以獲得更多的背景下,以我所努力的方向。

回答

0

我知道這是舊的,但我花了時間試圖找出解決這個問題的最佳方法。

原來它是固定在角1.4!嘗試用1.4替換原始翻轉器中的Angular版本,問題就會消失。我通過嘗試各種版本發現了這一點,直到我縮小了範圍。