私はAngularJSを使用しており、Angular JSを使用してドロップダウンリストコントロールの選択オプションを設定する必要があります。これがばかげている場合はご容赦くださいがAngular JSが初めてです
これが私のHTMLのドロップダウンリストコントロールです。
<select ng-required="item.id==8 && item.quantity > 0" name="posterVariants"
ng-show="item.id==8" ng-model="item.selectedVariant"
ng-change="calculateServicesSubTotal(item)"
ng-options="v.name for v in variants | filter:{type:2}">
</select>
人口が増えた後に
<select ng-options="v.name for v in variants | filter:{type:2}" ng-change="calculateServicesSubTotal(item)"
ng-model="item.selectedVariant" ng-show="item.id==8" name="posterVariants"
ng-required="item.id==8 && item.quantity > 0" class="ng-pristine ng-valid ng-valid-required">
<option value="?" selected="selected"></option>
<option value="0">set of 6 traits</option>
<option value="1">5 complete sets</option>
</select>
value="0"
のコントロールを選択するにはどうすればいいですか?
私はあなたの質問を理解していると思いますが、ng-model
ディレクティブはコントロール内の選択された項目とitem.selectedVariant
の値の間に双方向のバインディングを作成します。つまり、JavaScriptでitem.selectedVariant
を変更するか、コントロール内の値を変更すると、もう一方も更新されます。 item.selectedVariant
の値が0
の場合、その項目は選択されているはずです。
variants
がオブジェクトの配列の場合、item.selectedVariant
はそれらのオブジェクトの1つに設定されなければなりません。私はあなたがあなたの範囲内にある情報を知りませんが、ここに例があります:
JS:
$scope.options = [{ name: "a", id: 1 }, { name: "b", id: 2 }];
$scope.selectedOption = $scope.options[1];
HTML:
<select data-ng-options="o.name for o in options" data-ng-model="selectedOption"></select>
これにより、 "b"項目が選択されたままになります。
これが誰かに役立つかどうかはわかりませんが、同じ問題に直面していたので、解決策を共有することを考えました。
ng-options
に track by attributeを使うことができます。
あなたが持っていると仮定します。
variants:[{'id':0, name:'set of 6 traits'}, {'id':1, name:'5 complete sets'}]
あなたのng-options
を次のように挙げることができます。
ng-options="v.name for v in variants track by v.id"
これが将来誰かに役立つことを願っています。
item.selectedVariant
に値0を代入すると自動的に選択されます。 http://docs.angularjs.org/api/ng.directive:select にあるサンプルをチェックしてください。デフォルトでは、単に$scope.color='red'
を代入して赤色を選択しています。
私はここですでに良い答えを書いているのを見ます、しかしいつか他の形で同じことを書くことは役に立ちます
<div ng-app ng-controller="MyCtrl">
<select ng-model="referral.organization" ng-options="c for c in organizations"></select>
</div>
<script type='text/javascript'>
function MyCtrl($scope) {
$scope.organizations = ['a', 'b', 'c', 'd', 'e'];
$scope.referral = {
organization: $scope.organizations[2]
};
}
</script>
あなたがレスポンスとしてUsersまたはあなたが定義したArray/JSONを持っているなら、最初にあなたはコントローラに選択された値を設定する必要があります、そしてあなたはhtmlに同じモデル名を入れます。この例は私が最も簡単な方法で説明するために書きました。
簡単な例
コントローラー内部:
$scope.Users = ["Suresh","Mahesh","Ramesh"];
$scope.selectedUser = $scope.Users[0];
あなたのHTML
<select data-ng-options="usr for usr in Users" data-ng-model="selectedUser">
</select>
複雑な例
コントローラー内部:
$scope.JSON = {
"ResponseObject":
[{
"Name": "Suresh",
"userID": 1
},
{
"Name": "Mahesh",
"userID": 2
}]
};
$scope.selectedUser = $scope.JSON.ResponseObject[0];
あなたのHTML
<select data-ng-options="usr.Name for usr in JSON.ResponseObject" data-ng-model="selectedUser"></select>
<h3>You selected: {{selectedUser.Name}}</h3>
それは便利です。結合はいつもうまくいくとは限らない。
<select id="product" class="form-control" name="product" required
ng-model="issue.productId"
ng-change="getProductVersions()"
ng-options="p.id as p.shortName for p in products">
</select>
例えば。 rest-serviceからオプションリストのソースモデルを埋めます。選択された値はリストを埋めるために知られていて設定されました。 $ http listオプションでrest-requestを実行した後に行われます。しかし選択されたオプションは設定されていません。不明な理由により、shadow $ digestを実行中のAngularJSがバインドされていないはずです。私はJQueryを使用して選択を設定します。それは重要です! shadowのAngularは、ng-repeatオプティノによって生成されるattr "value"の値にプレフィックスを追加します。 intの場合は "number:"です。
$scope.issue.productId = productId;
function activate() {
$http.get('/product/list')
.then(function (response) {
$scope.products = response.data;
if (productId) {
console.log("" + $("#product option").length);//for clarity
$timeout(function () {
console.log("" + $("#product option").length);//for clarity
$('#product').val('number:'+productId);
//$scope.issue.productId = productId;//not work at all
}, 200);
}
});
}
以下を試してください。
JSファイル
this.options = {
languages: [{language: 'English', lg:'en'}, {language:'German', lg:'de'}]
};
console.log(signinDetails.language);
HTMLファイル
<div class="form-group col-sm-6">
<label>Preferred language</label>
<select class="form-control" name="right" ng-model="signinDetails.language" ng-init="signinDetails.language = options.languages[0]" ng-options="l as l.language for l in options.languages"><option></option>
</select>
</div>