2016-04-15 1 views
2

У меня есть простой пример, где я exptecting моих абзацев, чтобы отфильтровать значения на основе уникального возраста, но я получаю неизвестную ошибку поставщика. Как ?уникальный фильтр не работает должным образом в Angular.js

<html> 
<head> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular.min.js"></script> 
</head> 
<body ng-app="myApp" ng-controller="myCtrl"> 
    <p ng-repeat="x in persons | unique: 'age'">{{x.name}}</p> 
<script> 
//App declaration 
var app = angular.module('myApp',[]); 
//Controller Declaration 
app.controller('myCtrl',function($scope){ 
    $scope.persons = [{name: "Peter",age:23},{name:"Laila",age:25},{name:"Rosy",age:23}]; 
}); 
</script> 
</body> 
</html> 

enter image description here

+1

угловому не имеет ип ique фильтр. https://docs.angularjs.org/api/ng/filter –

+0

Я почти уверен, что это угловой фильтр, не знакомый с родным :) –

+1

Не существует уникального фильтра в угловом режиме (выполните поиск в https : //cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular.js). Попробуйте использовать эти утилиты https://github.com/a8m/angular-filter – sbedulin

ответ

2

Вам нужно впрыснуть «ui.directives» и модуль «ui.filters» к вашему приложению

var app = angular.module('myApp',['ui.directive', 'ui.filters']); 

С ui.directives и ui.filters модули присутствуют в AngularUI, вам также необходимо обратиться угловые-ui.js в приложении

<script src="http://cdnjs.cloudflare.com/ajax/libs/angular-ui/0.4.0/angular-ui.min.js"></script> 

Ваш полный код должен выглядеть как этот

<html> 
<head> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular.min.js"></script> 
<script src="http://cdnjs.cloudflare.com/ajax/libs/angular-ui/0.4.0/angular-ui.min.js"></script> 
</head> 
<body ng-app="myApp" ng-controller="myCtrl"> 
    <p ng-repeat="x in persons | unique: 'age'">{{x.name}}</p> 
<script> 
//App declaration 
var app = angular.module('myApp',['ui.directives','ui.filters']); 
//Controller Declaration 
app.controller('myCtrl',function($scope){ 
    $scope.persons = [{name: "Peter",age:23},{name:"Laila",age:25},{name:"Rosy",age:23}]; 
}); 
</script> 
</body> 
</html> 
+0

Я не думаю, что вам нужен модуль 'ui.directives', а версия' ui очень устарела' v0.4.0 - 2013-02- 15'. Это не означает, что 'unique' не будет работать, но вместо того, чтобы добавлять зависимость от излишков, лучше использовать только фильтр или написать свой собственный. – sbedulin

+0

@sbedulin Я согласен с вами. Я дал ответ, потому что возникает вопрос, почему была вызвана ошибка неизвестного провайдера. –

1

Это потому, что уникальный фильтр в настоящее время можно найти как часть AngularJs UI Utils. Чтобы сделать эту работу, вы должны включить ее в качестве дополнительной ссылки в свой модуль. angular.module('myApp', ['ui', 'ui.filters']);

Надейтесь, что это вам поможет.