2015-01-08 3 views
1

У меня есть 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, который удаляет дубликаты из моего массива.

+0

Почему вам нужна директива? – PSL

+0

@PSL: Мне интересно узнать, как вы могли бы сделать то же самое с директивой. Что бы вернуть директиву и т. Д .... – Shane

+3

Не имеет смысла на самом деле делать это в директиве, чтобы преобразовать данные, которые точно являются фильтрами ... Или вы ищете нечто большее, чем просто преобразование данных? – PSL

ответ

1

Вот как я бы писать:

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> 

Я думаю, что директива не нужна, как если бы, как это в основном действует как обертка

+0

Можете ли вы мне помочь в этой теме ? http://stackoverflow.com/questions/28035944/can-anyone-explain-me-this-password-match-directive – Shane

Смежные вопросы