angularjs 自定義過濾器 v1.x
阿新 • • 發佈:2019-01-30
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>
價格:<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>