我有一个名字的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 :(得分: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>
我认为指令是不必要的,好像它基本上充当了包装器