Anglejsのデフォルト値でドロップダウンリストを設定できます。
<select name="repeatSelect" id="repeatSelect" ng-model="repeatSelect" ng-init=" repeatSelect = data[0].id">
<option ng-repeat="option in data" value="{{option.id}}">{{option.name}}</option>
</select>
ng-options
を使用して同じことを実現するにはどうすればよいですか?私は、
<select name="repeatSelect"
id="repeatSelect"
ng-model="repeatSelect"
ng-init=" repeatSelect = option.id"
ng-options="option.name for option in data track by option.id">
</select>
しかし、役に立たない。サンプル フィドルはこちら
ng-init
を使用して、ng-options
のデフォルト値を設定します。
ここにあります: demo
<select name="repeatSelect"
id="repeatSelect"
ng-model="repeatSelect"
ng-init=" repeatSelect = data[0].id"
ng-options="option.id as option.name for option in data">
</select>
このすべてがng-init
の使用を逃しています。
angularドキュメントから:
このディレクティブは、テンプレートに不必要なロジックを追加するために悪用される可能性があります。以下のデモに見られるように、ngRepeatの特別なプロパティのエイリアスなど、ngInitの適切な使用法はわずかです。サーバー側のスクリプトを介してデータを注入します。これらのいくつかのケースに加えて、ngInitではなくコントローラーを使用して、スコープの値を初期化する必要があります。
私の意見では、デフォルト値を設定する正しい方法は、ng-model
プロパティにng-options
から選択した値を事前に入力することです。残りはangularが行います。
基本的に、$scope
プロパティを定義すると、selectはバインドしてdata
配列からデフォルト値を割り当てます。 data
配列がajaxリクエストからのものである場合は、data
を取得したら割り当てます。
.controller('test', ['$scope', function ($scope) {
$scope.data = [{name: 'one', id: 1}, {name: 'two', id: 2},{name: 'three', id: 3}];
$scope.repeatSelect= $scope.data[0];
}]);
注意すべき点が1つあります。式にas
キーWordを使用する場合、ng-model
に選択するように指示する実際のプロパティを割り当てる必要があります。
両方のデモをご覧ください: http://jsfiddle.net/kb99gee8/
あなたがあなたのコードとng-options
を使ってあなたが必要とするものを達成しました、あなたが言及したように、ここにあります Working Fiddle
完全なコード
<div ng-app="ngrepeatSelect">
<div ng-controller="ExampleController">
<form name="myForm">
<label for="repeatSelect">Angular select:</label>
<select name="repeatSelect"
id="repeatSelect"
ng-model="repeatSelect"
ng-init=" repeatSelect = data[0]"
ng-options="option.name for option in data track by option.id">
</select>
</form>
<br/> <tt>Selected value: {{repeatSelect.id}}</tt>
</div>
</div>
<br/>
HTMLパーツの例を提案します
<select class="form-control" ng-model="data.selectedOption" required ng-options="option.name as option.name for option in venueNamelists" ng-change="getmediationRooms(data.selectedOption)"></select>
私のコントローラーで
$ scope.data = {selectedOption:$ scope.venueNamelists [i] .name};
モデル値は、venueNamelistsのキーと値のペアに等しくなければなりません。