2017-03-16 66 views
2

我已經創建了具有在JSON數據中定義的層次結構的鏈接(父 - 子)選擇框。每個選擇框對象都指定了它的父級選擇框對象,以及一組選擇框選項,其中每個選項都包含選項值+父值。選擇框對象還包含選定選項對象,該選項對象與可用選擇框選項對象之一相同。下面是數據的簡化表示:使用ng選項填充選擇框多次調用ng-change函數

enter image description here

我創建動態使用在「選擇」標籤ng-options選擇盒,然後我使用自定義過濾器,其中我被父匹配濾波器所檢索的選項選項值的選項值與其父對象的「當前選定值」一起使用。基本上使用自定義過濾器從子選項值到所選父值進行多對一映射。

問題是,有了這個結構,我想把ng-change指令放在選擇框上,它會調用一個控制器函數來做一些事情。但是這個函數被調用的次數與一個層次結構中的選擇框數量相同(在這種情況下爲3,如圖所示)。這在應用程序中造成嚴重的不良行爲。

Here is the Plunker,我在這裏轉載了這個問題。我在選擇框更改事件上調用一個函數來設置與選擇框關聯的單選按鈕(例如,如果選擇了國家/地區選擇框中的某個值,則層次結構中下一個選擇框的單選按鈕,即州,應該被選中)。但由於setDrillDown函數被多次調用,最後一個與層次結構中最後一個選擇框關聯的單選按鈕被選中。

由於這個問題而陷入困境,任何幫助將不勝感激!

回答

1

我用ngModelOptions作爲this 所以它只會運行ngChange中提供的函數,當我改變選擇。但在初始化階段消息保持空白。

我用$ timeout作爲this,它運行良好。

0

它看起來像預期的那樣工作。 ngChange被稱爲模型價值變化,這就是你的選擇發生了什麼。

當您更改第一個選擇框時,ngChange將被要求CountryStateCity,因爲每個這些值都會改變。 如果您在第二個選擇State中選擇了某些內容,則將調用ngChange來執行StateCity

您必須考慮不同的方法或參數化onChange方法

相關問題