首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >md-select检查md-options中重复选项的标准是什么

md-select检查md-options中重复选项的标准是什么
EN

Stack Overflow用户
提问于 2015-12-09 13:57:12
回答 2查看 6.5K关注 0票数 2

我在我的项目中使用Angular材质已经有一段时间了。在使用md-select时,我遇到了一个问题,即我得到重复的md-option值错误。

我知道md-options采用唯一的值,并且我将一个数组赋给md-options。然而,这是一个对象数组。所以我想知道区分物体的标准是什么。API并没有对此做太多说明。

我的用例要求根据从另一个md-select中进行的选择来更改md-select的md-options。因此,我正在观察第一个md-select的选择,并触发对其更改的监视,并更新第二个md-select的md-options。

下面是我将数组赋值给md-options的方法:

代码语言:javascript
代码运行次数:0
运行
复制
$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是每个对象的唯一实体。因此,我使用它将唯一值推入数组。然而,在我选择和取消选择各种选项之后,这种情况发生在一些随机的场景中。请告诉我我做错了什么,以及标记两个对象重复的标准是什么

EN

回答 2

Stack Overflow用户

发布于 2016-01-27 02:57:54

您没有提供您的标记,所以我不能确定,但在我的例子中,问题是由于在md-option标记中省略了'value‘属性上的双curley。

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

代码语言:javascript
代码运行次数:0
运行
复制
<md-option ng-repeat="item in vm.list" value="item.id">{{item.text}}</md-option>

这不是:

代码语言:javascript
代码运行次数:0
运行
复制
<md-option ng-repeat="item in vm.itemlist" value="{{item.id}}">{{item.text}}</md-option>

我认为失败的原因是每一项都将被放入选项列表中,并被赋予'item.id‘(字面意思)的值。它将在重复的第二次迭代中失败。使用大括号会导致使用“item.id”中的值。

希望这能有所帮助。

票数 8
EN

Stack Overflow用户

发布于 2016-07-29 03:28:13

尝试使用ng-value而不仅仅是value属性。

代码语言:javascript
代码运行次数:0
运行
复制
<md-option ng-repeat="item in vm.list" ng-value="item.id">{{item.text}}</md-option>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34171709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档