Angularjs md select检查md选项中重复选项的标准是什么

Angularjs md select检查md选项中重复选项的标准是什么,angularjs,angular-material,Angularjs,Angular Material,我已经在我的项目中使用了一段时间的角度材料。在使用md select时,我遇到了一个问题,其中我得到了重复的md选项值错误 我知道md选项具有唯一的值,我正在为md选项分配一个数组。然而,这是一个对象数组。所以我想知道区分物体的标准是什么。API对此没有太多说明 我的用例要求根据从另一个md select的选择来更改md select的md选项。因此,我正在观察第一个md select的选择,并在其更改时启动一个手表,并更新第二个md select的md选项 下面是我用来将数组分配给md选项的方

我已经在我的项目中使用了一段时间的角度材料。在使用md select时,我遇到了一个问题,其中我得到了重复的md选项值错误

我知道md选项具有唯一的值,我正在为md选项分配一个数组。然而,这是一个对象数组。所以我想知道区分物体的标准是什么。API对此没有太多说明

我的用例要求根据从另一个md select的选择来更改md select的md选项。因此,我正在观察第一个md select的选择,并在其更改时启动一个手表,并更新第二个md select的md选项

下面是我用来将数组分配给md选项的方法:

$scope.$watch('search.selectedTrades', function(newTrades, oldTrades) {
    if ((newTrades.length === 0)) {
        $rootScope.search.selectedTrades = oldTrades;
        return;
    }
    if ($rootScope.search.selectedTrades && $rootScope.search.selectedTrades.length > 0) {
        if (!$rootScope.identity.isClusterManager) {
            $rootScope.search.selectedTrades = newTrades;
            SearchFilterData.setSelectedTrades(newTrades);
            $rootScope.search.selectedClusters = [];
            $scope.clusters = [];
            $scope.subareas = [];
            var clusterKeys = [];
            $rootScope.search.selectedTrades.forEach(function(t) {
                t.lstClusters.forEach(function(c) {
                    if (clusterKeys.indexOf(c.ClusterKey) == -1) {
                        clusterKeys.push(c.ClusterKey);
                        $scope.clusters.push(c);
                    }
                })
            })
        }
    } else {
        $scope.clusters = [];
        $scope.subareas = [];
        $rootScope.search.selectedClusters = [];
        $rootScope.search.selectedSubAreas = [];
        SearchFilterData.setSelectedTrades($rootScope.search.selectedTrades);
    }
});
在上面的代码中,clusterKey是每个对象的唯一实体。所以我使用它将唯一值推送到数组中。
然而,在我选择和取消选择各种选项之后,在少数随机场景中会发生这种情况。请告知我做错了什么,以及标记两个对象重复的标准是什么

您没有提供标记,因此我不能确定,但在我的情况下,问题是由于忽略了md选项标记中“value”属性上的双卷曲

这很糟糕:请注意缺少的花括号

<md-option ng-repeat="item in vm.list" value="item.id">{{item.text}}</md-option>
{{item.text}
这不是:

<md-option ng-repeat="item in vm.itemlist" value="{{item.id}}">{{item.text}}</md-option>
{{item.text}
我相信这失败的原因是,每个项目都将被放入选项列表中,并被赋予一个“item.id”(字面意思)的值。它将在重复的第二次迭代中失败。 使用大括号会导致使用“item.id”中的值


希望这能有所帮助。

尝试使用ng value而不是value属性

<md-option ng-repeat="item in vm.list" ng-value="item.id">{{item.text}}</md-option>
{{item.text}

解决这个问题运气好吗?我有相同的场景。我也得到“重复md选项值”异常。我已验证绑定到选项列表的数组没有重复项。