0

私の AngularJS アプリケーションには、Attendee オブジェクトを含む配列を提供するグローバル コントローラーがあります。特定の出席者オブジェクトを 1 つ含む CourseRegistration モデルを変更したいです。編集ウィンドウで、現在の出席者を選択する必要があるのに対し、可能なすべての出席者のドロップダウンを取得したいと思います。

私のhtmlには次のコードがあります:

        <select ng-model="courseRegistration.attendee" ng-options="attendeeSelectItem.name for attendeeSelectItem in attendeeSelectItems"></select>

JSON.stringify を使用して出力courseRegistration.attendeeし、対応するオプションで同じことを行うと、同じオブジェクト (同じ ID、同じ名前など) が出力されます。しかし、2 つの同一のオブジェクトに対して ( ) のようなことをするcourseRegistration.attendee == attendeeSelectItemと、false になります。

私の質問は、現在選択されている項目 (courseRegistration.attendee に保存されている) が、リスト内の対応するオブジェクト (オプションで使用される) と一致することを確認するにはどうすればよいですか?

よろしくお願いします。

JSFiddle: http://jsfiddle.net/2ddCy/

マークに挨拶

4

2 に答える 2

0

コントローラーに次のようなものがあると思いますか?

$scope.courseRegistration = {attendee: {id: 2, name: "A Person"}}

その場合、比較が失敗する理由は、オブジェクトが現在選択されているものと同じプロパティを持っている可能性がありますが、メモリ内の別のオブジェクトを参照しているため、同等として分類されないためです。

簡単なハックとして、それらを文字列化して比較することができますが、正しいアプローチは、キーで現在の値を設定することです。

$scope.courseRegistration = {attendee: attendeeSelectItems[1]};

または、id/name を保存し、ng-optionsその値だけにバインドするように条件を設定します。

$scope.courseRegistration = {attendee: 1};

<select ng-model="courseRegistration.attendee" ng-options="attendeeSelectItem.id as attendeeSelectItem.name for attendeeSelectItem in attendeeSelectItems"></select>
于 2013-07-23T15:50:05.060 に答える
0

基本的に、オブジェクトの配列を使用して選択を設定すると、選択リストに表示されている 1 つの項目だけでなく、オブジェクト全体が選択されます。

詳細とコード例については、この質問を参照してください: ng-options と ng-switch を一緒に使用する場合の問題

于 2013-07-23T15:43:00.670 に答える