ng-options 中的对象比较

Object comparison in ng-options

我有一个 select,我使用 ng-optionsng-model 填充了它。我遇到的问题是,最初,模型是 ng-options 中数据的副本,所以我的初始状态是空白 option 而不是 ng-model 的正确状态。我怎样才能让它正确地比较模型?如果我使用 Id,则很难显示描述

<select ng-options="role.Name for role in roles" ng-model="editingUser.Roles[0]"></select>
<span>{{editingUser.Roles[0].Description}}</span>

在 C# 中我会重载相等方法,这在 JS 中可行吗/Angular?

Angular 在这种情况下使用引用相等性。在您的控制器中,遍历 roles 数组以找到与您在 editingUser.Roles[0] 中的副本对应的原件,并将副本替换为原件。

或者,如果您的角色包含一个 ID,您可以在 ng-options 属性中使用 track by

<select ng-options="role.Name for role in roles track by role.id"
ng-model="editingUser.Roles[0]"></select>