おそらく、ng-options で Object 構文のいずれかを使用する必要があります。
select as label for (key , value) in object
または配列構文:
select as label for value in array
これにより、オプションの表示ラベル (表示されるもの) と ng-model の値オプションの両方が設定されます。
現在、使用しlabel for value in array
ているときは、オプションのラベルのみを設定しています。データ モデル $scope.ads が次のようになるとします。
$scope.ads = [
{ title = 'Business Development 1',
value = 'bizdev1'
},
{ title = 'Business Development 2',
value = 'bizdev2'
}....
];
その後、 を使用するng-options = 'ad.value as ad.title for ad in ads'
と、表示されるオプションは同じままですが、オプションの 1 つを選択するとng-model
、数値だけでなくオブジェクトの値が含まれるようになります。
値を動的に変更する必要がある場合 - jQuery ループで何かをループする必要はありません。Angular には 2 方向のデータ バインディングがあるため、$scope.ads
要素select
の値の値を変更すると、それに合わせて変更されます。
詳細については、http://docs.angularjs.org/api/ng.directive:selectをご覧ください。
編集- ng クリック後に実際の値自体を変更したい場合は、データをループして 1 ずつインクリメントすることで変更できます (その場合、値を整数のままにしておく方が理にかなっています。
特定のオプションを選択するボタンのみが必要な場合 (入力ボックスから ng-model を使用するなど)、 select ng-modelを変更することで実行できますselected_ad
。選択したいものの値に変更します。
edit 2 - データセットを次のように変更するだけです:
$scope.selected_ad = 1;
$scope.ads = [
{ title = 'Business Development 1',
value = 1
},
{ title = 'Business Development 2',
value = 2
}
];
コントローラーのロジック変更を追加します。
$scope.changeSelection = function(e) {
e.stopPropagation();
e.preventDefault();
++$sccope.selected_ad;
}
そして、あなたのselect dom要素で:
<select ng-model="selected_ad" ng-options ='ad.value as ad.title for ad in ads' ng-click="changeSelection($event)">
それはそれを修正する必要があります。