2016-04-01 10 views
1

<select>要素があります。これは、条件に基づいてデフォルトの<option>が設定されている可能性があります。つまり、別のユーザーが以前にフォームを送信し、しかし、私はng-ifをOption要素(または任意のタグ)に適用することはできないようで、私は解決策を見つけるのが難しいと思っています。AngularJS Options in a条件に基づいた選択

現在、私のコードは次のようになります - これは他の誰かが前にフォームを提出したことを意味し、その値が設定され、唯一のはずされた

<select 
    id="someId" 
    ng-options="(item?'Yes':'No') for item in [true, false]" 
    class="someClass" 
    ng-class="someMethodToGetDynamicClass('this') 
    ng-model="myObject.thisOption" 
    ng-disabled="valueCheckingIfThisObjectHasBeenPreviouslySubmitted"> 
    <option ng-if="valueCheckingIfThisObjectHasBeenPreviouslySubmitted" selected>{{myObject.thisOption}}</option> 
</select> 

選択オプションはvalueCheckingIfThisObjectHasBeenPreviouslySubmittedがtrueの場合に設定する必要があります表示されます。

答えて

1

あなたは私が速いの例を提供するために、あなたのコードを簡素化し、フィルタまたは、より簡単にオプションを使用<select>ng-options属性を避け、代わりにng-repeat<option>の要素

を使用することができます(とさえ私はサイクルを見ることができないため、一部...あなたはそれと何かが失われていきましたか?または多分それはちょうど金曜日の午後だと私はそれを見ることはできません:)

<select ng-options="item for item in items" ng-model="selectedItem"> 
</select> 

これは

<select ng-model="selectedItem"> 
    <option ng-repeat="item for item in items" ng-if="item === yourConditionVariableOrElse">{{item}}<option> 
</select> 
になる簡素化

簡略化しても手順がわかりました。

+0

私が読んだところでは、 'ng-if'は'

+0

本当に使えます;) 'ng-for'の代わりに' ng-repeat'という間違いを修正しました – Naigel

+0

この投稿の一番上の答えは時代遅れですか? http://stackoverflow.com/questions/23755801/angular-ng-if-inside-option-element-and-ng-repeat-not-working – millerbr

1

ng-selectedを試してみてください。たとえば

<select 
id="someId" 
class="someClass" 
ng-class="someMethodToGetDynamicClass('this') 
ng-model="myObject.thisOption" 
ng-disabled="valueCheckingIfThisObjectHasBeenPreviouslySubmitted"> 
<option ng-repeat="item in [{'k':true, 'v':'Yes'}, {'k':false, 'v':'No'}] ng-selected="valueCheckingIfThisObjectHasBeenPreviouslySubmitted && item.k == myObject.thisOption" >{{item.v}}</option> 

<option ng-selected="valueCheckingIfThisObjectHasBeenPreviouslySubmitted">{{myObject.thisOption}}</option> 

0

マルコス」と答えたとng-repeatを使用するNaigelsの提案に基づいて[OK]を、私はそうのようにそれを解決したと思いますng-repeatは、チェックする対象の値を格納するオブジェクトの配列( 'k')に渡って繰り返し、ディスプレイラボel( 'v')。 ng-selectedは、valueCheckingIfThisObjectHasBeenPreviouslySubmittedが真であり、現在のitem.kが提出された値と等しいかどうかをチェックします。

関連する問題