AngularJs filter 過濾器基礎【轉】

Filterjavascript

Ng裏的過濾器。html

 

currency:把一個數字格式化成貨幣模式(如$1,234.56)。當沒有提供任何貨幣符號時,默認使用當前區域的符號。java

使用:express

HTML:{{ currency_expression | currency:symbol:fractionSize}}json

JS:$filter(「currency」)(amount,symbol,fractionSize);數組

amount:數值,過濾的值。app

symbol:字符串,要顯示的貨幣符號或標識符。函數

fractionSize:數值,整數的小數位數,默認爲當前的最大位數。this

 

date:基於須要的格式將時間格式化成字符串。spa

使用:

HTML:{{date_expression | date:format:timezone}}

JS:$filter(「date」)(date,format,timezone);

date:格式化爲日期的日期對象。若是沒有指定輸入的時區字符串,時間則是當地時間。

format:格式規則/格式。

timezone:時區。

 

filter:從數組中選出一個子集,並將其做爲一個新數組返回。

使用:

HTML:{{filter_expression | filter:expression:comparator}}

JS:$filter(「filter」)(array,expression,comparator);

array:被過濾的數組。

expression:字符串/對象/函數,用於從數組中選擇數據的判斷表達式。使用$能夠匹配任何字段。

comparator:函數/Boolean/undefined,用於肯定預期的值(從filter表達式返回)和實際的值(數組中的對象)進行比較,應視爲匹配。function(actual,expected);

 

json:容許將一個javascript對象轉換爲json字符串。

使用:

HTML:{{json_expression | json:spacing}}

JS:$filter(「json」)(object,spacing);

object:過濾的對象。

spacing:每一個縮進的空格數,默認爲2。

 

limitTo:建立一個只包含指定數目元素的數組或字符串。元素是按指定的值和符號(+或-)從數組、字符串或數字的開頭或結尾獲取的。若是輸入一個數字,則轉換爲字符串。

使用:

HTML:{{limitTo_expression | limitTo:limit:begin}}

JS:$filter(「limitTo」)(input,limit,begin);

input:限制的數組,字符串,數字。

limit:限制的長度。

begin:限制長度開始的位置(根據索引)。

 

lowercase:將字符串轉換爲小寫。

使用:

HTML:{{lowercase_expression | lowercase}}

JS:$filter(「lowercase」)(input);

Input:過濾的字符串。

 

number:將數值轉換爲文本。

若是輸入是null或undefined,那麼其將被返回。若是輸入的是無窮(正無窮/負無窮),將會返回無窮大的符號「∞」。若是輸入不是一個數字,返回一個空字符串。

使用:

HTML:{{number_expression | number:fractionSize}}

JS:$filter(「number」)(number,fractionSize);

number:轉換的數值。

fractionSize:數值,整數的小數位數,默認爲當前的最大位數。在默認的區域設置的狀況下這個數值是3。

 

orderBy:經過判斷表達式將指定的數組進行排序。它是按字符串的字母順序和數值的數字排序的。

注意:若是你發現數字沒有按預期排序,請確保它們其實是被保存爲數字而不是字符串。

使用:

HTML:{{orderBy_expression | orderBy:expression:reverse}}

JS:$filter(「orderBy」)(array,expression,reverse);

array:排序的數組。

expression:字符串/函數/數組,用來肯定元素順序的表達式。

reverse:boolean,顛倒數組的順序。默認爲false。

 

uppercase:將字符串轉換爲大寫。

使用:

HTML:{{uppercase_expression |uppercase}}

JS:$filter(「uppercase」)(input);

Input:過濾的字符串。

 

自帶filter使用代碼:

複製代碼
  <div ng-app="Demo" ng-controller="testCtrl as ctrl">
     <!-- HTML: {{ctrl.currencyValue | currency:"USD$":1}} -->
     {{ctrl.currencyValue}}
     <!-- HTML: {{ctrl.dateValue | date:"yyyy-MM-dd"}} -->
     {{ctrl.dateValue}}
     <!-- HTML: <div ng-repeat="i in newArr = (ctrl.arr | filter:'2')">{{i}}</div> -->
     <div ng-repeat="i in ctrl.newArr">{{i}}</div>
     <!-- HTML: <div ng-repeat="i in newArr = (ctrl.arr | filter:{check:true})">{{i}}</div> -->
     <div ng-repeat="i in ctrl._newArr">{{i}}</div>
     {{ctrl.obj | json}}
     <!-- HTML: <div ng-repeat="i in ctrl.arr | limitTo:3:2">{{i}}</div> -->
     <div ng-repeat="i in ctrl.secondNewArr">{{i}}</div>
     <!-- HTML: {{ctrl.str | lowercase}} -->
     {{ctrl.str}}
     <!-- HTML: <div ng-repeat="i in ctrl.arr | orderBy:'name':true">{{i}}</div> -->
     <div ng-repeat="i in ctrl.thirdNewArr">{{i}}</div>
     <!-- HTML: {{ctrl.str | uppercase}} -->
     {{ctrl.newStr}}
  </div>
複製代碼
複製代碼
(function () {
    angular.module("Demo", [])
    .controller("testCtrl", ["$filter",testCtrl]);
    function testCtrl($filter) {
        this.currencyValue = 1234.56;
        this.currencyValue = $filter("currency")(this.currencyValue,"USD$",1);
        this.dateValue = new Date();
        this.dateValue = $filter("date")(this.dateValue,"yyyy-MM-dd");
        this.arr = [{name:'John', phone:'555-1276',check:true},
                {name:'Mary', phone:'800-BIG-MARY',check:false},
                {name:'Mike', phone:'555-4321',check:true},
                {name:'Adam', phone:'555-5678',check:true},
                {name:'Julie', phone:'555-8765',check:false},
                {name:'Juliette', phone:'555-5678',check:true}];
        this.newArr = $filter("filter")(this.arr,"2");
        this._newArr = $filter("filter")(this.arr,{check:true});
        this.obj = {"name":"beast","age":21};
        this.secondNewArr = $filter("limitTo")(this.arr,3,2);
        this.str = "Hello World";
        this.str = $filter("lowercase")(this.str);
        this.thirdNewArr = $filter("orderBy")(this.arr,"name",true);
        this.newStr = $filter("uppercase")(this.str);
    };
  }());
複製代碼

 

自定義filter

基本代碼:

  angular.module(「x」,[]).filter(「filterName」,[「dependancy」,function(dependancy){
       return function(value){
         //your code   return the data which passed filter(返回過濾後的數據)
  };
  }]);

filterName:過濾器名稱。

dependency:注入的服務。

value:須要過濾的數據。

自定義filter使用代碼:

  <div ng-app="Demo" ng-controller="testCtrl as ctrl">
    <div ng-repeat="i in newArr=(ctrl.arr | myFilter)">
       {{i.value}}
    </div>
  </div>
複製代碼
  (function () {
    angular.module("Demo", [])
    .filter("myFilter",myFilter)
    .controller("testCtrl", ["$filter",testCtrl]);
    function myFilter(){
       return function(value){
          var arr = [];
          angular.forEach(value,function(item,index){
              if(item.value.indexOf("this")>=0){
                  arr.push(item);
              }
          });
          return arr;
      }
    };
    function testCtrl($filter) {
        this.arr = [{"value":"this is a."},{"value":"that is b."},{"value":"this is c."},{"value":"that is a."}];
    };
  }());
複製代碼

這裏對數組arr進行過濾,把數組中對象value屬性的值含有」this「文本的對象都放進個新數組並返回該數組。

 

轉自http://www.cnblogs.com/ys-ys/p/5006951.html

相關文章
相關標籤/搜索