65

オブジェクトの編集に使用するフォームがあり、選択ボックスで値を選択できません。

編集する を表す json 配列があり、次のようになります。

$scope.item = [{
    "objectID": "76",
    "versionID": "0",
    "versionName": "CURRENT",
    "objectName": "xyz",
}]

今、私は同時に、次のような別のjson配列から選択ボックスを作成しています:

$scope.versions = [
{
    "id": "0",
    "description": "CURRENT",
    "name": "CURRENT"
},
{
    "id": "114",
    "description": "description of Version 2",
    "name": "version2"
},
{
    "id": "126",
    "description": "description of Version 3",
    "name": "version3"
},
{
    "id": "149",
    "description": "description of Version 4",
    "name": "version4"
}] 

私のWebページ内で、次のように選択ボックスを作成しています:

Version: <select ng-model="item.versionID"
                 ng-selected="item.versionID"
                 ng-options="version.name for version in versions"
                 required>

選択ボックスに値が入力されていますが、バージョンに一致する値を選択する必要がありますitem。と の両方を試しましversionIDversionNameが、設定も試しましたが、うまくいきng-selected="0"ません。

私はSO、Angularjsサイトを見て、数え切れないほどのチュートリアルをグーグルで調べましたが、まだ問題があります. 問題が何であるかがわからないようですので、どんな助けでも大歓迎です

JSFiddle が追加されました

ここに JsFiddle を追加しました

4

7 に答える 7

125

このように ng-initを簡単に使用できます

<select ng-init="somethingHere = options[0]" ng-model="somethingHere" ng-options="option.name for option in options"></select>
于 2014-02-21T10:04:21.130 に答える
31

追加するだけです

track by version.id

あなたのng-optionsに。

于 2014-03-31T16:28:41.763 に答える
30

モデルは id または name プロパティにバインドされておらず、各versionオブジェクトにバインドされているため、デフォルト値は設定されません。versionIDをオブジェクトの 1 つに設定してみてください。動作するはずです。つまり、$scope.item.versionID = $scope.versions[2];

select asid プロパティで設定する場合は、次の構文を追加する必要があります。

ng-options="version.id as version.name for version in versions"

http://jsfiddle.net/LrhAQ/1/

于 2013-08-22T13:15:37.150 に答える
-1

docs selectに従って、次のコードが機能しました。

<div ng-controller="ExampleController">
<form name="myForm">
<label for="mySelect">Make a choice:</label>
<select name="mySelect" id="mySelect"
  ng-options="option.name for option in data.availableOptions track by     option.id"
  ng-model="data.selectedOption"></select>
</form>
<hr>
<tt>option = {{data.selectedOption}}</tt><br/>
</div>
于 2015-09-21T00:15:00.277 に答える
-1
  <select ng-model="selectedCar" ><option ng-repeat="car in cars "  value="{{car.model}}">{{car.model}}</option></select>
<script>var app = angular.module('myApp', []);app.controller('myCtrl', function($scope) { $scope.cars = [{model : "Ford Mustang", color : "red"}, {model : "Fiat 500", color : "white"},{model : "Volvo XC90", color : "black"}];
$scope.selectedCar=$scope.cars[0].model ;});
于 2016-06-02T09:12:51.787 に答える
-3

ng-model を静的な値に初期化したくなく、各値が DB 駆動型である場合は、次の方法で実行できます。Angular は評価された値を比較し、ドロップダウンに入力します。

以下の modelData.unitId は DB から取得され、db とは別のリストであるユニット ID のリストと比較されます。

 <select id="uomList" ng-init="modelData.unitId"
                         ng-model="modelData.unitId" ng-options="unitOfMeasurement.id as unitOfMeasurement.unitName for unitOfMeasurement in unitOfMeasurements">

于 2015-09-10T18:06:05.083 に答える