ng-options 中的对象比较
Object comparison in ng-options
我有一个 select
,我使用 ng-options
和 ng-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>
我有一个 select
,我使用 ng-options
和 ng-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>