簡體   English   中英

從數組指令中刪除重復項

[英]Remove duplicates from array directive

我有一個穿上名字的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>

我認為指令是不必要的,因為它基本上起包裝器的作用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM