ここに私のjsonオブジェクト:
$scope.todos = [{
name: 'angular',
field: ['a', 'b', 'c', 'd'],
id: 1
}, {
name: 'asd',
field: ['a', 'b', 'c', 'd', 'e'],
id: 2
}];
私は次のように選択します:
<select ng-model="dashboard.type" ng-options="item as item.name for item in todos track by item.name"></select>
オプションが選択されると、前の選択を繰り返す別の選択が必要になりngModel
ます。次は次のようになります。
<select ng-model="dashboard.label" ng-options="item as item for item in dashboard.type.field"></select>
$scope.dashboard.type.name = 'qwe'
オプションを手動で選択すると正常に動作しますが、それらがスクリプトのdashboard.type(例:)の値である場合、オブジェクト全体を保存track by
するのではなく、オプションを選択してに保存するために使用します。使用した値を保存するだけですオプションdashboard.type
で。track by
dashboard.type の値:
- オプションを手動で選択すると:
{"name":"qwe","field":["a","b","c","d","f"],"id":3}
- トラックバイ使用時:
{"name":"qwe"}
注:は使用できませんtrack by item
。オブジェクトのプロパティである必要がありますitem
。またはのいずれname
かid
です。
ここにplnkrがあります。
編集 :
多くの人が指摘したように、オブジェクトをtodos
リストの値に初期化できないことを明確にしたいと思います。これは、dashboard.type.name
値が毎回todos
異なり、リストが数十から数百のオブジェクトに変化するためです。todos
ここで、リストのチェックを繰り返しtodos[index].name==someName
、関連するオブジェクトを割り当てる必要があります。私は積極的にこのソリューションを回避しようとしています (より良い方法が必要なので)。
注:ng-change
実際のオブジェクトを使用して割り当てよ うとしましdashboard.type.name
たが、オプションが手動で選択された場合にのみ機能し、すでに正常に機能しているようです。使用時にオブジェクトを割り当てませんtrack by
。
重要: $scope.dashboard.type.name = 'qwe'
は単なる例です。の値は$scope.dashboard.type.name
、ページが読み込まれるたびに変わる可能性があります。
PS: また、これについては以前に言及しておくべきでした。申し訳ありません。