从数组指令中删除重复项

Remove duplicates from array directive

本文关键字:删除 数组 指令      更新时间:2023-09-26

我有一个div 来鞋的名字。我想删除数组中的重复项。我已经用filter做到了这一点,但我想知道我们如何扩展它来构建一个directive

<div ng-controller="MainController">
        <ul>
            <li ng-repeat="name in names | unique">
                {{name}}
            </li>   
        </ul>
</div>

下面是过滤器代码。

angular.module('app')
    .controller('MainController', ['$scope', function($scope){
        $scope.names = ['a','b','c','d','a','c'];
    }])
    .filter('unique', function(){
        return function(names){
            var obj = {};
            names.forEach(function(name){
                obj[name] = null;
            })
            return Object.keys(obj);
        }
    })
    .directive('unique', function(){
        return {
            link: function(scope, elem, attr){
            }
        }
    })

如何构建一个从数组中删除重复项的directive

这是我的写法:

angular.module('app')
    .controller('MainController', ['$scope', function($scope){
        $scope.names = ['a','b','c','d','a','c'];
    }])
    .directive('uniqueArray', function(){
        return {
            restrict: 'E',
            scope: {
                arr: '='
            }
            template: '<ul><li ng-repeat="item in unique_arr">{{item}}</li></ul>',
            controller: function($scope){
                function get_unique(items){
                    var obj = {};
                    angular.forEach(items, function(item){
                        obj[item] = null;
                    });
                    return Object.keys(obj);
                }
                $scope.unique_arr = get_unique($scope.arr);
            }
        }
    })

在 HTML 中:

<unique-array arr="names"></unique-array>

我认为指令是不必要的,就好像它基本上充当包装器