gpt4 book ai didi

Angularjs 比较 ng-options 中的两个对象

转载 作者:行者123 更新时间:2023-12-01 07:13:30 26 4
gpt4 key购买 nike

我有两个对象数组。
一个非常简单的例子:

$scope.genres = [
{
id: '123',
name: 'Genre 1'
},
{
id: '124',
name: 'Genre 2'
},
{
id: '125',
name: 'Genre 3'
}
];

$scope.selectedGenres = [{
id: '123',
name: 'Genre 1'
}];

我用 流派 填充一个选择。
<select style="height: 100px; width: 100%;"
multiple
ng-model="selectedGenres"
ng-options="option as option.name for option in genres"></select>

我意识到做: $scope.selectedGenres = [$scope.genres[0]];将工作作为对象引用是相同的。

有没有办法比较两个对象的相等性而不是它们的引用?

示例: http://jsbin.com/cizuyitadu/6/edit

最佳答案

在您的示例中,您的对象没有相同的属性,因此在使用 angular.equals 时它们不会相等。您 selectedGenres 对象上有一个 '$$hashKey' 属性(angular 添加了这个),因为您不是指定的跟踪属性。 $scope.genres 数组中的对象没有 '$$hashKey' 属性。这就是 angular.equals 返回 false 的原因。

如果您在 ng-options 表达式中按属性添加跟踪,它将解决该问题。

ng-options="option as option.name for option in genres track by option.id"

关于Angularjs 比较 ng-options 中的两个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28115435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com