2016-05-20 5 views
1

私は<select>のボックスをいくつかのオブジェクトで設定しています。この例では、チームによってグループ化し、group byを使用します。ただし、選手チームが変更された場合、グループは更新されません。ng-optionsディレクティブが更新されていません

これは、マークアップです:

<select ng-options="player.name group by player.team for player in players"></select> 
<button ng-click="change();">Change team name</button> 

とコントローラ:

.controller('MainController', function($scope) { 
    $scope.players = [{ 
     name: 'Player one', 
     team: 'Denmark' 
     }, 
     { 
     name: 'Player two', 
     team: 'Denmark' 
     }, 
     { 
     name: 'Player three', 
     team: 'England' 
     }, 
     { 
     name: 'Player four', 
     team: 'England' 
     }, 
     { 
     name: 'Player five', 
     team: 'England' 
     } 
    ]; 

    $scope.change = function() { 
     $scope.players[0].team = 'Sweden'; 
    }; 

Here's私の問題を実証JSFiddle。

変更されたときにチーム名が更新されないのはなぜですか?

+0

'track by player.team'を – sp00m

+0

@ sp00m 'track by player.team'を使用すると、選択が中断されます。[this(http:/ /)]を見ると、' ngOptions'式の終わりはあなたの問題を解決するようですが、 /jsfiddle.net/fhyc 96rx/2 /)を選択してPlayer 3を選択しようとすると、Player 5が選択されます。 –

答えて

1

与えられていない場合、または「複数」フラグがセットされ、どちらも「トラックによって」場合https://docs.angularjs.org/api/ng/directive/ngOptions

AngularJSにのみ参照することにより、オブジェクトを追跡するセクション「複雑なモデル(オブジェクトまたはコレクション)」をご覧ください。

あなたはオプションのカップルがあります

は簡単なものがで」トラックを追加することです( 『|』 + player.name + player.teamを)それは少しハックです

か。あなたの変更メソッドでは、新しいオブジェクトを作成します: $ scope.players [0] = {name:$ scope.players [0] .name、team: "Sweden"}

関連する問題