AngularJS ng-repeat unique is NOT working -
i'm trying print unique values of names i'm unable that.
html code:
<div ng-controller="myctrl"> <div><input type="text" ng-model="namefilter" placeholder="search..." /></div> <p ng-repeat="contact in contacts | orderby: 'customer.name'| unique:'customer.name'">{{ contact.customer.name }}</p> </div>
js code:
var myapp = angular.module('myapp',[]); function myctrl($scope) { $scope.namefilter = ''; $scope.contacts = [ { id:1, customer: { name: 'foo', id: 10 } }, { id:2, customer: { name: 'bar', id: 20 } }, { id:3, customer: { name: 'foo', id: 10 } }, { id:4, customer: { name: 'bar', id: 20 } }, { id:5, customer: { name: 'baz', id: 30 } }, { id:5, customer: { name: 'tar', id: 30 } }, { id:5, customer: { name: 'got', id: 30 } }, { id:5, customer: { name: 'man', id: 30 } }, { id:5, customer: { name: 'baz', id: 30 } }, ]; }
the jsfiddle here: http://jsfiddle.net/nvarun123/0tgl7u6e/73/
this code working if remove unique ng-repeat.
here go, used unique
filter in angular ui directives, link in bottom. have made small change in directive implementing deep finding using string
. details inside references.
here demo of filter.
change made inside unique
filter.
var extractvaluetocompare = function (item) { if (angular.isobject(item) && angular.isstring(filteron)) { return deepfind(item,filteron); } else { return item; } };
as seen above implementing deepfind
function. function provided below.
function deepfind(obj, path) { var paths = path.split('.') , current = obj , i; (i = 0; < paths.length; ++i) { if (current[paths[i]] == undefined) { return undefined; } else { current = current[paths[i]]; } } return current; }
references:
Comments
Post a Comment