您好,登錄后才能下訂單哦!
本文實(shí)例講述了AngularJS自定義過(guò)濾器用法。分享給大家供大家參考,具體如下:
過(guò)濾器結(jié)構(gòu)
{{帶過(guò)濾數(shù)據(jù) | 過(guò)濾器名:參數(shù)1:參數(shù)2:參數(shù)3.....}} app.filter('過(guò)濾器名', function () { return function (待過(guò)濾數(shù)據(jù), 參數(shù)....) { ...... return 已過(guò)濾數(shù)據(jù); }
示例一:是否包含
<!doctype html> <html ng-app="myApp"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <script src="http://apps.bdimg.com/libs/angular.js/1.2.16/angular.min.js"></script> </head> <body> <div ng-controller="myAppCtrl"> <div> <table> <tr> <th>Name</th> <th>Phone</th> </tr> <!--寫(xiě)法1--> <tr ng-repeat="friend in friends |myfilter"> <!--寫(xiě)法2--> <!--<tr ng-repeat="friend in newArr=(friends | myfilter)">--> <td>{{friend.name}}</td> <td>{{friend.phone}}</td> </tr> </table> </div> </div> <script type="text/javascript"> var app = angular.module("myApp", []); app.controller("myAppCtrl", ["$scope", function ($scope) { $scope.friends = [{name: 'John', phone: '44555-1276'}, {name: 'Annie', phone: '800-BIG-MARY'}, {name: 'Mike', phone: '11555-4321'}, {name: 'Adam', phone: '33555-5678'}, {name: 'David', phone: '387555-8765'}, {name: 'Mikay', phone: '555-5678'}]; }]); app.filter("myfilter", function () { return function (input) { var output = []; angular.forEach(input, function (value, key) { console.log("value==" + JSON.stringify(value)); console.log("value.phone類(lèi)型==" + typeof (value.phone)); console.log("value.phone.indexOf==" + value.phone.indexOf("555")); /*js中沒(méi)有contains方法,使用indexOf來(lái)判斷字符串是否包含*/ /*indexOf字符串出現(xiàn)的位置,沒(méi)有則返回-1*/ //方法一: if (value.phone.indexOf("555") >= 0) { output.push(value); } //方法二: // if (value.phone.indexOf("555") !== -1) { // output.push(value); // } }); return output; } }); </script> </body> </html>
示例二:倒序
<!doctype html> <html ng-app="myApp"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <script src="http://apps.bdimg.com/libs/angular.js/1.2.16/angular.min.js"></script> </head> <body> <div ng-controller="myAppCtrl"> 姓名:{{ name }}<br> 倒序:{{ name | reverse }}<br> 倒序并大寫(xiě):{{ name | reverse:true }} </div> <script type="text/javascript"> var myAppModule = angular.module("myApp", []); myAppModule.controller("myAppCtrl", ["$scope", function ($scope) { $scope.name = "xuqiang"; }]); myAppModule.filter("reverse", function () { return function (input, uppercase) { <!--input就是其中name代表的值。--> <!--uppercase這個(gè)bool值,判斷是否要進(jìn)行大小寫(xiě)轉(zhuǎn)換。--> var out = ""; for (var i = 0; i < input.length; i++) { out = input.charAt(i) + out; } if (uppercase) { out = out.toUpperCase(); } return out; <!--返回過(guò)濾后的字符串--> } }); </script> </body> </html>
示例三:替換
<!doctype html> <html ng-app="myApp"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <script src="http://apps.bdimg.com/libs/angular.js/1.2.16/angular.min.js"></script> </head> <body ng-controller="myAppCtrl"> <div> <div> {{welcome | replaceHello}}<br/> {{welcome | replaceHello:3:5}}<br/> </div> </div> <script type="text/javascript"> var app = angular.module("myApp", []); app.controller("myAppCtrl", ["$scope", function ($scope) { $scope.welcome = "Hello AngularJs"; }]); //自定義過(guò)濾器 app.filter('replaceHello', function () { return function (input, n1, n2) { console.log("input==" + input); console.log("n1==" + n1); console.log("n2==" + n2); return input.replace(/Hello/, '您好'); } }); </script> </body> </html>
示例四:篩選
<!doctype html> <html ng-app="a3_3"> <head> <title>自定義過(guò)濾器</title> <script src="../Script/angular.min.js" type="text/javascript"></script> <style type="text/css"> body { font-size: 12px; } ul { list-style-type: none; width: 408px; margin: 0px; padding: 0px; } ul li { float: left; padding: 5px 0px; } ul .odd { color: #0026ff; } ul .even { color: #ff0000; } ul .bold { font-weight: bold; } ul li span { width: 52px; float: left; padding: 0px 10px; } ul .focus { background-color: #cccccc; } </style> </head> <body> <div ng-controller="c3_3"> <ul> <li ng-class="{{bold}}"> <span>序號(hào)</span> <span>姓名</span> <span>性別</span> <span>年齡</span> <span>分?jǐn)?shù)</span> </li> <li ng-repeat=" stu in data | young:0" ng-class-odd="'odd'" ng-class-even="'even'"> <span>{{$index+1}}</span> <span>{{stu.name}}</span> <span>{{stu.sex}}</span> <span>{{stu.age}}</span> <span>{{stu.score}}</span> </li> </ul> </div> <script type="text/javascript"> var a3_3 = angular.module('a3_3', []); a3_3.controller('c3_3', ['$scope', function ($scope) { $scope.bold = "bold"; $scope.data = [ {name: "張明明", sex: "女", age: 24, score: 95}, {name: "李清思", sex: "女", age: 27, score: 87}, {name: "劉小華", sex: "男", age: 28, score: 86}, {name: "陳忠忠", sex: "男", age: 23, score: 97} ]; }]); a3_3.filter('young', function () { return function (e, type) { var _out = []; var _sex = type ? "男" : "女"; for (var i = 0; i < e.length; i++) { if (e[i].age > 22 && e[i].age < 28 && e[i].sex == _sex) _out.push(e[i]); } return _out; } }); </script> </body> </html>
示例五:排序
<!doctype html> <html ng-app="a3_4"> <head> <title>表頭排序</title> <script src="../Script/angular.min.js" type="text/javascript"></script> <style type="text/css"> body { font-size: 12px; } ul { list-style-type: none; width: 408px; margin: 0px; padding: 0px; } ul li { float: left; padding: 5px 0px; } ul .bold { font-weight: bold; cursor: pointer; } ul li span { width: 52px; float: left; padding: 0px 10px; } ul .focus { background-color: #cccccc; } </style> </head> <body> <div ng-controller="c3_4"> <ul> <li ng-class="{{bold}}"> <span>序號(hào)</span> <span ng-click="title='name';desc=!desc"> 姓名 </span> <span ng-click="title='sex';desc=!desc"> 性別 </span> <span ng-click="title='age';desc=!desc"> 年齡 </span> <span ng-click="title='score';desc=!desc"> 分?jǐn)?shù) </span> </li> <li ng-repeat=" stu in data | orderBy : title : desc"> <!--title:屬性值,desc:升序or降序--> <span>{{$index+1}}</span> <span>{{stu.name}}</span> <span>{{stu.sex}}</span> <span>{{stu.age}}</span> <span>{{stu.score}}</span> </li> </ul> </div> <script type="text/javascript"> var a3_4 = angular.module('a3_4', []); a3_4.controller('c3_4', ['$scope', function ($scope) { $scope.bold = "bold"; $scope.title = 'name'; $scope.desc = 0; $scope.data = [ {name: "張明明", sex: "女", age: 24, score: 95}, {name: "李清思", sex: "女", age: 27, score: 87}, {name: "劉小華", sex: "男", age: 28, score: 86}, {name: "陳忠忠", sex: "男", age: 23, score: 97} ]; }]) </script> </body> </html>
示例六:輸入過(guò)濾
<!doctype html> <html ng-app="a3_5"> <head> <title>字符查找</title> <script src="../Script/angular.min.js" type="text/javascript"></script> <style type="text/css"> body { font-size: 12px; } ul { list-style-type: none; width: 408px; margin: 0px; padding: 0px; } ul li { float: left; padding: 5px 0px; } ul .bold { font-weight: bold; cursor: pointer; } ul li span { width: 52px; float: left; padding: 0px 10px; } ul .focus { background-color: #cccccc; } </style> </head> <body> <div ng-controller="c3_5"> <div> <input id="txtkey" type="text" ng-model="key" placeholder="請(qǐng)輸入姓名關(guān)鍵字"/> </div> <ul> <li ng-class="{{bold}}"> <span>序號(hào)</span> <span>姓名</span> <span>性別</span> <span>年齡</span> <span>分?jǐn)?shù)</span> </li> <li ng-repeat=" stu in data | filter : {name:key}"> <span>{{$index+1}}</span> <span>{{stu.name}}</span> <span>{{stu.sex}}</span> <span>{{stu.age}}</span> <span>{{stu.score}}</span> </li> </ul> </div> <script type="text/javascript"> var a3_5 = angular.module('a3_5', []); a3_5.controller('c3_5', ['$scope', function ($scope) { $scope.bold = "bold"; $scope.key = ''; $scope.data = [ {name: "張明明", sex: "女", age: 24, score: 95}, {name: "李清思", sex: "女", age: 27, score: 87}, {name: "劉小華", sex: "男", age: 28, score: 86}, {name: "陳忠忠", sex: "男", age: 23, score: 97} ]; }]) </script> </body> </html>
參考:
【angularjs實(shí)戰(zhàn)】
更多關(guān)于AngularJS相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《AngularJS指令操作技巧總結(jié)》、《AngularJS入門(mén)與進(jìn)階教程》及《AngularJS MVC架構(gòu)總結(jié)》
希望本文所述對(duì)大家AngularJS程序設(shè)計(jì)有所幫助。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。