コードでわかるように、私はcar A、B、およびCのリストにavailableCarsリストに対応するidを持っています。私は既にサービスから選んだ車を得ている。それは車の名前だけのオブジェクトではありません。ユーザーは別の車を選択するオプションがありますが、変更された場合、別のサービスに車のIDを送信する必要があります。私の目標を達成する最も簡単な方法はありますか?値からAngularドロップダウンリストからIDを取得するには?
(function(angular) {
'use strict';
angular.module('ngrepeatSelect', [])
.controller('ExampleController', ['$scope', function($scope) {
$scope.carName = (function getCarNameFromService(){
return 'Car B';
})();
$scope.availableCars = [
{id: '1A', name: 'Car A'},
{id: '2B', name: 'Car B'},
{id: '3C', name: 'Car C'}
]
}]);
})(window.angular);
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Example - example-ngrepeat-select-production</title>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.min.js"></script>
<script src="app.js"></script>
</head>
<body ng-app="ngrepeatSelect">
<div ng-controller="ExampleController">
<form name="myForm">
<label for="repeatSelect"> Repeat select: </label>
<select name="repeatSelect" id="repeatSelect" ng-model="carName">
<option ng-repeat="option in availableCars" value="{{option.name}}">{{option.name}}</option>
</select>
</form>
<hr>
<tt>selected car name = {{carName}}</tt><br/>
<tt>selected car id = ???</tt><br/>
</div>
</body>
</html>
問題は、モデル "selectedCar"はオブジェクトではありません。私はちょうど名前(この場合は "車B")を持っています。また、ドロップダウンには名前が必要です。どのように私はそれをこの状況で動作させることができますか?お返事をありがとうございます。 –
私はなぜselectedCarがオブジェクトになれないのか分かりません(名前を入力として取得している場合や、使用可能な車のリスト内のオブジェクトと一致して正しいものを取得できる場合)。特定の理由はありますか?私はそれを使いこなし、あなたに戻ってきますが、ng-optionsで可能ならば、それは洗練されたソリューションになるとは思えません。 – sourdoughdetzel
あなたが求めていることを行うようにプランカーを更新しましたが、フルカーオブジェクトをドロップダウンのドライバーとして使用し続けます(提供された名前に基づいてデフォルトカーを検索して最初に設定します)。それがあなたがやろうとしていることに対してうまくいかないかどうか私に教えてください! – sourdoughdetzel