Javascript AngularJS选择列表与所选项目不匹配

Javascript AngularJS选择列表与所选项目不匹配,javascript,html,rest,angularjs,Javascript,Html,Rest,Angularjs,我的AngularJS应用程序中有一个全局控制器,它为我提供了一个包含Attendee对象的数组。我想要的是修改我的课程注册模型,该模型包含一个特定的与会者对象。在编辑窗口中,我想获得一个包含所有可能与会者的下拉列表,而应该选择当前与会者 我的html中有以下代码: <select ng-model="courseRegistration.attendee" ng-options="attendeeSelectItem.name for attendeeSelectItem

我的AngularJS应用程序中有一个全局控制器,它为我提供了一个包含Attendee对象的数组。我想要的是修改我的课程注册模型,该模型包含一个特定的与会者对象。在编辑窗口中,我想获得一个包含所有可能与会者的下拉列表,而应该选择当前与会者

我的html中有以下代码:

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

如果我使用JSON.stringify打印
courseRegistration.attendee
,并使用相应的选项执行相同的操作,那么它们会打印出相同的对象(相同的id、相同的名称等)。但是如果我对两个相同的对象执行类似(
courseRegistration.attendee==attendeeSelectItem
)的操作,那么我会得到false

因此,我的问题是,如何确保当前选定的项目(存储在courseRegistration.attendee中)与我列表中的相应对象(由选项使用)匹配

先谢谢你

JSFiddle:

问候
Marc

基本上,当您使用对象数组填充选择时,它会选择整个对象,而不仅仅是选择列表中看到的一个项目


有关详细信息和示例代码,请参见此问题:

我假设您的控制器中有如下内容

$scope.courserregistration={attendee:{id:2,name:'A Person}}

如果是这样,比较失败的原因是,尽管对象可能与当前选择的对象具有相同的属性,但它引用了内存中的不同对象,因此未被归类为相等对象

现在,作为一种快速破解,您可以将它们字符串化,然后进行比较,但是正确的方法是通过键设置当前值:

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

或者只需存储id/名称并将
ng选项设置为仅绑定到该值:

$scope.courseRegistration = {attendee: 1};

<select ng-model="courseRegistration.attendee" ng-options="attendeeSelectItem.id as attendeeSelectItem.name for attendeeSelectItem in attendeeSelectItems"></select>
$scope.courserregistration={attendee:1};

请分享您的小提琴或琴谱,谢谢您的建议。我喜欢方法1和键的值。这意味着我必须循环浏览所有项目,找出与当前课程注册匹配的项目?很难说,因为你发布的小提琴实际上没有显示你想要做的事情。我做的是从REST资源获取当前课程注册。。。本课程注册中包含的一个项目是attendee对象。另一方面,我执行REST调用以获取所有可用的与会者(包含所有与会者的数组)。我想得到的是,如果我编辑此课程注册,其中包含的attendee项将与Attendes数组中相应的attendee对象匹配。使用stringify的选项会是什么样子?