AngularJS filter Example

by vishwackh89

HTML

<script src="http://code.angularjs.org/1.0.0rc4/angular-1.0.0rc4.min.js"></script>
<div ng:app="myApp">
 <div ng-controller="HelloCntl">
 <ul>
    <li ng-repeat="friend in friends">
        <span>{{friend.name}}| &nbsp;</span>
        <span>{{friend.phone | weDontLike}}</span>
        <br/><br/>
    </li>
 </ul>
 </div>
</div>

CSS

span
{
 width: 200px;   
}

JavaScript

angular.module('myApp',[]).filter('weDontLike', function(){
    
    return function(phonenumber){
                if (!phonenumber) {
                    return '';
                }
                var originalNo = phonenumber;
                phonenumber = phonenumber.toString().trim().replace(/[^a-zA-Z0-9 ]/g, '');
                
                
                var number = (phonenumber.length > 10) ? phonenumber.substr(phonenumber.length - phonenumber.length) : phonenumber;

                if (!isNaN(number)) {
                    if (number.length > 10) {
                        if (originalNo[0] === '+') {
                            return originalNo;
                        } else {
                            return "+1-" + number;
                        }
                    } else if (number.length === 10) {
                        return "+1-" + number.substring(0);
                    } else {
                          if (originalNo[0] === '+') {
                            return originalNo;
                        } else {
                            return "+1-" + number;
                        }
                           
                    }
                } else {
                    return number;
                }
    };
});

function HelloCntl($scope) {
    $scope.friends = [
        {
        name: '=10 with (+)',
        phone: '+1-3150000006'},
    {
        name: '=10 with out (+)',
        phone: '3150000005'},
    {
        name: '<10 with (+)',
        phone: '+1-7000000'
        },
    {
        name: '<10 with out (+)',
        phone: '600000'},        
    {
        name: '>10 with (+)',
        phone: '+1-8150000008888'},
    {
        name: '>10 with out (+)',
        phone: '91500000069999'},
    {
        name: 'String',
        phone: 'adsadasdasd'}  , 
   {
        name: 'null',
        phone: ''}         
    ];
}