AngularJS Filters

2018-06-07 18:24 更新

本文將簡單介紹AngularJS中的filter組件,即AngularJS的過濾器。

在正文之前,先來回顧一下ng中的一些基本概念:

  • module,代碼的組織單元,其它東西都是在具體的模塊中定義的
  • app,業(yè)務(wù)概念,可能會用到多個模塊
  • service,僅在數(shù)據(jù)層面實現(xiàn)特定業(yè)務(wù)功能的代碼封裝
  • controller,與DOM結(jié)構(gòu)相關(guān)聯(lián)的東西,既是一種業(yè)務(wù)封裝概念,又體現(xiàn)了項目組織的層級結(jié)構(gòu)
  • filter,改變輸入數(shù)據(jù)的一種機制
  • directive,與DOM結(jié)構(gòu)相關(guān)聯(lián)的、特定功能的封裝形式

過濾器Filter的自定義是最簡單的,就是一個函數(shù),接受輸入,然后返回結(jié)果。在考慮過濾器時,我覺得很重要的一點:無狀態(tài)。

具體來說,過濾器就是一個函數(shù),函數(shù)的本質(zhì)含義就是確定的輸入一定得到確定的輸出。雖然filter是定義在module當(dāng)中的,而且filter又是在controller的DOM范圍內(nèi)使用的,但是,它和具體的module,controller$scope這些概念都沒有關(guān)系(雖然在這里你可以使用js的閉包機制玩些花樣),它僅僅是一個函數(shù),而已。換句話說,它沒有任何上下文關(guān)聯(lián)的能力。

下面是一個簡單點例子:


var app = angular.module('Demo', [], angular.noop);
app.filter('map', function(){
    var filter = function(input){
      return input + '...';
    };
    return filter;
});

當(dāng)有多個參數(shù)時,html中使用:來分割,形如:
data|map2:province:city



以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號