2016-05-13 112 views
0

我有一個下拉選擇與分組ng選項。用戶應該能夠動態更改輸入字段中組名的命名。 在更改組名值時,除非您進行新的選擇,否則select指令不會更新選擇ng選項組名稱不會更新|動態ng選項組

任何人都有同樣的問題?

這裏的jsbin:http://jsbin.com/ziyeduzalo/edit?html,js,output

這是我的代碼的外觀: 的.js

$scope.players = [ 
    {name: 'Gene', team: 'alpha'}, 
    {name: 'George', team: 'beta'}, 

]; 


$scope.change = function() { 
    $scope.players[0].team = 'new-group-name'; 
}; 

的.html

<select ng-options="player.name group by player.team for player in players " ng-model="systemType.tertiaryEquipment"></select> 

UPDATE:這似乎工作老版本的角然後1.4.x.

+0

我不明白爲什麼,但這個例子工作在jsfiddle檢查它[這裏](http://jsfiddle.net/66mojr47/2/) –

+0

這是因爲Angular.js版本。嘗試將其從1.0.x更改爲1.4.x,並且不起作用。你的例子中的 – ccostel

+0

在ng-options的結尾放置了'track by player.team'。 [jsfiddle](http://jsfiddle.net/Lvc0u55v/3938/) –

回答

1

在這裏,我編輯了你的js bin的副本。基本上我已經告訴angularJS重新編譯選擇輸入,因爲它會改變。

這是在一個控制器內完成的,該控制器是一個不良做法,創建一個自定義指令來做這種操作。並使用選擇的DOM元素select而不是document.querySelector()

http://jsbin.com/miyecireba/1/edit?html,js,output

+0

謝謝。這確實是一個非常醜陋的做法。希望有更好的方法來解決這個問題。 – ccostel

+0

目前,在垃圾桶裏,它是。如果你自己創建一個指令,它不會太糟糕。重新編譯一個DOM元素對於用戶來說並不重要 –

1

對於其他人可能來到這個問題解決了這方面的問題,其中通過使用軌道提供element變量。

跟蹤應該用來標識select中唯一的選項,所以如果這是真正的解決方案,應該有不同的方法。

由於ng-optionsgroup by將產生optgroups我們使用的優勢,所以我們可以在group by的物體上使用的track by。 選擇組將在select的顯示屏上顯示唯一。

因此,在這種情況下:

<select ng-options="player.name group by player.team for player in players track by player.team" ng-model="systemType.tertiaryEquipment"></select> 

jsfiddle

注: 用來測試這個角度版本1.4.9。