1. 程式人生 > >angularjs 自定義過濾器 v1.x

angularjs 自定義過濾器 v1.x

AngularJS 過濾器

過濾器可以使用一個管道字元(|)新增到表示式和指令中。

過濾器 描述
currency 格式化數字為貨幣格式。
filter 從陣列項中選擇一個子集。
lowercase 格式化字串為小寫。
orderBy 根據某個表示式排列陣列。
uppercase 格式化字串為大寫。

AngularJS 過濾器可用於轉換資料,以上過濾器是angularjs自帶的,通常不能滿足我們的特殊需要,因此,通常還需要懂得自定義過濾器。

<!DOCTYPE html>
<html
lang="en">
<head> <meta charset="UTF-8"> <title>angularjs 自定義過濾器</title> </head> <body ng-app="app"> <div ng-controller="ctr"> <h1>水果價格表</h1> <div> 價格範圍: <input type="number" ng-model="min">-- <input
type="number" ng-model="max">
</div> <ul> <!--自定義過濾器myfilter在html中呼叫時不需要傳第一個引數,後面2個引數用“:”拼接,可以是字串、數值或者變數--> <li ng-repeat="item in fruits | myfilter:min:max"> 名稱:<span ng-bind="item.name"></span>&nbsp;&nbsp;&nbsp;&nbsp; 價格:<span
ng-bind="item.price">
</span> </li> </ul> </div> <script src="http://cdn.static.runoob.com/libs/angular.js/1.4.6/angular.min.js"></script> <script> angular.module('app', []) .filter('myfilter', function () { return function (fruits, min, max) { //fruits 為第一個引數,即待過濾的陣列 //min,max為其他引數可有可無 var arr = []; min = min > 0 ? min : 0; max = max ? max : 99999999; angular.forEach(fruits, function (item) { if (item.price > min && item.price <= max) { arr.push(item); } }); return arr; } }) .controller('ctr', ['$scope', '$filter', function ($scope, $filter) { $scope.fruits = [ {name: 'apple', price: 5.2}, {name: 'banana', price: 3.5}, {name: 'mango', price: 12}, {name: 'watermelon', price: 2.5}, {name: 'peach', price: 4}, {name: 'grape', price: 15}, {name: 'litchi', price: 20}, {name: 'orange', price: 6} ]; //自定義過濾器myfilter在js中使用時,案例如下: //第一個引數是待過濾資料,第2,3個數據是根據定義要求傳入的資料,用逗號分割 $scope.res = $filter('myfilter')($scope.fruits, 10, 20); console.log($scope.res); }]) </script> </body> </html>