我在使用ng選項和過濾器時遇到了問題。Angularjs:帶過濾器的ng選項,select元素的模型保留已過濾選項的值
問題是,當一個選項被過濾器刪除時,select元素的模型將保留已刪除選項的值。
這是plunker。我有兩個過濾器在ng選項集上工作。一個從選項列表中刪除重複項,一個刪除空值。按照以下步驟,您可以看到我所說的問題。
- 在「首選電子郵件」下拉列表中,選擇最後一個電子郵件選項'[email protected]'。
- 刪除「其他電子郵件」輸入框中的文本。
您現在可以看到,因爲「其他電子郵件」爲空,它不再是可用選項,並且下拉列表默認爲「請選擇首選電子郵件」。然而,select元素的模型仍然有分配給它的那個對象。
同樣的問題不同的上下文。
- 在「首選電子郵件」下拉列表中,選擇選項'[email protected]'。
- 現在刪除「Z」中的「[email protected]」
一旦這樣做,在兩個輸入框的值(「電子郵件」和「家庭電子郵件」)變得重複,而第二其中一個('家庭電子郵件地址')會被篩選出可用的選項。然而,剛過濾的對象仍然分配給模型。
編輯:(?任何人都可以做的更好),我的解決方案
這裏(plunker)是我能拿出最好的。我是新來的角,不禁想到有更好的方法來做到這一點,我認爲這個解決方案是「壞」,但它的工作原理。
本質上,我通過過濾器引用範圍(this.contact)以及我正在使用的默認項目的名稱('default_email'或'default_phone')。如果篩選器從選項集中刪除項目,它將檢查它是否爲默認項目,如果是,則將缺省設置爲未定義。
我還添加了更多的代碼,以獲得更多的背景下,以我所努力的方向。