2016-05-12 10 views
1

選択された属性に対する角度の動作が各メジャーバージョンで前後に変更されているようです。ですから、ng-repeatではなくng-optionsを使用して1.5.xリリースで達成可能かどうかを教えてくれる人を探しています。私はこのng-optionsでシングル/マルチ選択の選択属性を設定する

の多くのバリエーションを試してみた(それがjQueryプラグインによって解釈することができるように) は、次のように

<select multiple="multiple"...> 
<option value="abc123" label="Justin" selected="selected">Justin</option> 
</select> 

をHTMLを角度作成してもらう:私は何をしようとしている

<select ms-multi-listbox multiple="multiple" class="multi-select" 
id="ym" name="ym" ng-model="groupCtrl.memSelection" 
ng-options="mem as mem.displayName for mem in groupCtrl.selectableMembers track by mem.id"> 

運がない。

モデルは次のようになります。ここでは

groupCtrl.memSelection =["abc123"];//inbound from api as is selectableMembers 

が、私は(追加の混乱のための角度バージョンを変更してみてください)でプレーしてきたplunkです:Plunker

すべてのアイデアは歓迎されている..私は主にng-repeatを避けたかったのは、長いリストではオーバヘッドが多いからですが、明らかに遅いのは働かないよりも良いので、ng-optionsでこれを行う方法を学ぶまで使用します。

ありがとうございます!

編集:ここでは は私が望む結果を達成NG-繰り返しである:

<option ng-repeat="mem in groupCtrl.selectableMembers" value="{{mem.id}}" label="{{mem.displayName}}" ng-selected="groupCtrl.memSelection.indexOf(mem.id)>=0">{{mem.displayName}}</option> 
enter code here 
+0

私が正しく理解していれば、選択に基づいて属性を設定する必要があります。これにはカスタムディレクティブが必要です。 – Kyle

+0

はい、optionsタグに 'selected'属性を設定します。 Angularは、モデルがリスト内の値に初期化されている場合に、場合によっては(そしていくつかのバージョンで)これを行います。 –

+0

あなたのプランカーリンクが間違っています。 –

答えて

0

は、AS SELECTを使用する場合は注意してくださいと同じ式にすることにより追跡します。 AngularJS API ngOptions

ng-optionsの式は機能しません。同じ式にselect astrack byを使用すると、mem.idmem.id.idと評価されます。

ng-options="mem as mem.displayName for mem in groupCtrl.selectableMembers track by mem.id" 

そして、どのようにあなたが選択したオブジェクトを設定するだけでなく私に右見ていないに式を変更します。 idを設定するだけでは、オブジェクト全体を選択しなければならない場合は、ng-options式の評価も失敗します。したがって、あなたの選択を(選択可能なデータがplunkの例のように$scope.modelに格納されていると仮定して)変更してください。

$scope.memSelection = [$scope.model[0], $scope.model[1]] 

私はplunkを更新しました。これは1回または複数回の選択に役立ちます。

詳細については、AngularJS API ngOptionsを参照してください。

+0

ありがとうポール、私はこれを今修正しました。 –

+0

私はそれが今1.4バージョンを除いてただ単一の選択(更新されたplunkerリンク)のために働くと思います。私は、multiselectの属性を適用することはサポートされていないものだと推測しています。 –

関連する問題