2013-06-21 15 views
6

AngularJS için ilk özel filtresini yazmaya çalışıyorum. Bir şeyin bir dize veya sayı olup olmadığını belirleme yeteneğini istiyorum. Bir sayıysa, bunu, yerleşik filtre | number ile biçimlendirir.Metin/sayı için AngularJS özel filtresi

Şu anda have a workaround using ng-if:

HTML

<table> 
    <tr ng-repeat="(key, val) in data"> 
     <td>{{key}}</td> 
     <td ng-if="isNumber(val)">{{val | number}}</td> 
     <td ng-if="!isNumber(val)">{{val}}</td> 
    </tr> 
</table> 

Denetleyici: Ben kendi filtre olsa var gibi atamak için daha iyi bir çözüm olacağını düşündüm

$scope.data = { 
    One:55689, 
    two:"consider all the options", 
    three:800243, 
    four:"all over", 
    five:"or just beginning" 
    }; 

    $scope.isNumber = function (value) { 
    return angular.isNumber(value); 
    }; 

. Şimdiye kadar sahip olduğum şey (evet, çıplak kemikler olduğunu biliyorum ... bu benim ilkim).

.filter('textOrNumber',function(){ 
    return function (input) { 
     if(typeof input === 'number'){ 
      console.log("I'm a number"); 
      //return as formatted number 
     } else { 
      console.log("Not a number"); 
      //do nothing, just return 
     }; 
     return input; 
    }; 
}) 

bir numara olmaya doğrulandığında, ben sadece Eğik | number filtre uygulamak olabilir? Veya filtreyi elle javascript ile yapmam gerekiyor mu?

Ben $filter hizmet enjekte ve sonra böyle programlama sayı filtresi çağırır

cevap

17

:

angular.module('filters', []). 
filter('textOrNumber', ['$filter', function ($filter) { 
    return function (input, fractionSize) { 
     if (isNaN(input)) { 
      return input; 
     } else { 
      return $filter('number')(input, fractionSize); 
     }; 
    }; 
}]); 

böyle senin textOrNumber filtre kullanmak mümkün olacak Bu şekilde: JSFiddle

İşte
{{myText|textOrNumber:4}} 

çalışıyor .

+0

Bu kesinlikle doğrudur. Bunun kadar basit olabileceğini biliyordum. Ben '$ filter' bakmadım. Ne yapabileceğini daha iyi anlamak için bunu yapmak zorundayım. – EnigmaRM

İlgili konular