> 웹 프론트엔드 > JS 튜토리얼 > AngularJS 필터 사용에 대한 간략한 분석_AngularJS

AngularJS 필터 사용에 대한 간략한 분석_AngularJS

WBOY
풀어 주다: 2016-05-16 15:23:11
원래의
1233명이 탐색했습니다.

저는Angularjs를 체계적으로 연구한 결과 데이터 바인딩, 필터 등 Anglejs의 일부 아이디어가 PHP의 스마트 모듈과 매우 유사하다는 것을 발견했습니다. smarty에 익숙하다면, anglejs를 배우는 것이 더 쉬울 것입니다. 이번 글에서는angularjs 필터의 자세한 사용법을 소개하겠습니다. 관심 있는 친구들은 함께 배울 수 있습니다

필터 소개

필터는 데이터 형식을 지정하는 데 사용됩니다.

Filter의 기본 프로토타입('|'은 Linux의 파이프 모드와 유사):

코드 복사 코드는 다음과 같습니다.

{{ 표현식 | 필터 }}

필터는 체인으로 사용할 수 있습니다(즉, 여러 필터를 연속적으로 사용함).

코드 복사 코드는 다음과 같습니다.

{{ 표현식 | 필터2 ... }}

필터는 여러 매개변수를 지정할 수도 있습니다.

코드 복사 코드는 다음과 같습니다.

{{ 표현식:인수1:인수2:... }}

AngularJS 내장 필터

AngularJS에는 일반적으로 사용되는 필터가 내장되어 있습니다. 하나씩 살펴보겠습니다.

currencyFilter(통화):

목적: 통화 포맷

메서드 프로토타입:

코드 복사 코드는 다음과 같습니다.

함수(금액, 통화 기호, 분수 크기)

사용법:

{{ | 통화}}
{{ . | 통화:'엔'}}
{{ . | 통화:'CHY엔':}}

dateFilter(날짜):

용도: 날짜 형식

메서드 프로토타입:

코드 복사 코드는 다음과 같습니다.

함수(날짜, 형식, 시간대)

사용법:


{{ '2015-05-20T03:56:16.887Z' | 날짜:"MM/dd/yyyy @ h:mma"}}

{{ 1432075948123 | 날짜:"MM/dd/yyyy @ h:mma"}}

{{ 1432075948123 | 날짜:"MM/dd/yyyy @ h:mma":"UTC"}}

필터필터(필터):

용도: 필터 배열

메서드 프로토타입:

코드 복사 코드는 다음과 같습니다.

함수(배열, 표현식, 비교기)

사용법 1(매개변수 표현에 문자열 사용):

 <div ng-init="myArr = [{name:'Tom', age:}, {name:'Tom Senior', age:}, {name:'May', age:}, {name:'Jack', age:}, {name:'Alice', age:}]">
   <!-- 参数expression使用String,将全文搜索关键字 'a' -->
   <div ng-repeat="u in myArr | filter:'a' ">
     <p>Name:{{u.name}}</p>
     <p>Age:{{u.age}}</p>
     <br />
   </div>
 </div>
로그인 후 복사

용법 2(매개변수 표현식에서 함수 사용):

 // 先在Controller中定义function: myFilter
 $scope.myFilter = function (item) {
   return item.age === ;
 };
 <div ng-repeat="u in myArr | filter:myFilter ">
   <p>Name:{{u.name}}</p>
   <p>Age:{{u.age}}</p>
   <br />
 </div>
로그인 후 복사

사용법 3(매개변수 표현식에 객체 사용):

 <div ng-init="myArr = [{name:'Tom', age:}, {name:'Tom Senior', age:}, {name:'May', age:}, {name:'Jack', age:}, {name:'Alice', age:}]">
   <div ng-repeat="u in myArr | filter:{age: } ">
     <p>Name:{{u.name}}</p>
     <p>Age:{{u.age}}</p>
     <br />
   </div>
 </div>
로그인 후 복사

사용법 4(비교기를 참 또는 거짓으로 지정):

 <div ng-init="myArr = [{name:'Tom', age:}, {name:'Tom Senior', age:}, {name:'May', age:}, {name:'Jack', age:}, {name:'Alice', age:}]">
   Name:<input ng-model="yourName" />
   <!-- 指定comparator为false或者undefined,即为默认值可不传,将以大小写不敏感的方式匹配任意内容 -->
   <!-- 可以试试把下面代码的comparator为true,true即大小写及内容均需完全匹配 -->
   <div ng-repeat="u in myArr | filter:{name:yourName}:false ">
     <p>Name:{{u.name}}</p>
     <p>Age:{{u.age}}</p>
     <br />
   </div>
 </div>
로그인 후 복사

사용법 5(비교기를 함수로 지정):

// 先在Controller中定义function:myComparator, 此function将能匹配大小写不敏感的内容,但与comparator为false的情况不同的是,comparator必须匹配全文
 $scope.myComparator = function (expected, actual) {
   return angular.equals(expected.toLowerCase(), actual.toLowerCase());
 }
 <div ng-init="myArr = [{name:'Tom', age:}, {name:'Tom Senior', age:}, {name:'May', age:}, {name:'Jack', age:}, {name:'Alice', age:}]">
   Name:<input ng-model="yourName" />
   <div ng-repeat="u in myArr | filter:{name:yourName}:myComparator ">
     <p>Name:{{u.name}}</p>
     <p>Age:{{u.age}}</p>
     <br />
   </div>
 </div>
로그인 후 복사

jsonFilter(json):

메서드 프로토타입:

코드 복사 코드는 다음과 같습니다.

함수(객체, 간격)

用法(将对象格式化成标准的JSON格式):

复制代码 代码如下:

{{ {name:'Jack', age: 21} | json}}

limitToFilter(limitTo):

方法原型:

复制代码 代码如下:

function(input, limit)

用法(选取前N个记录):

 <div ng-init="myArr = [{name:'Tom', age:}, {name:'Tom Senior', age:}, {name:'May', age:}, {name:'Jack', age:}, {name:'Alice', age:}]">
   <div ng-repeat="u in myArr | limitTo:">
     <p>Name:{{u.name}}
     <p>Age:{{u.age}}
   </div>
 </div>
로그인 후 복사

lowercaseFilter(lowercase)/uppercaseFilter(uppercase):

方法原型:

复制代码 代码如下:

function(string)

用法:

China has joined the {{ "wto" | uppercase }}.
We all need {{ "MONEY" | lowercase }}.
로그인 후 복사

numberFilter(number):

方法原型:

复制代码 代码如下:

function(number, fractionSize)

用法:

{{ "3456789" | number}}
<br />
{{ true | number}}
<br />
{{ 12345678 | number:1}}
로그인 후 복사

orderByFilter(orderBy):

方法原型:

复制代码 代码如下:

function(array, sortPredicate, reverseOrder)

用法:

 <div ng-init="myArr = [{name:'Tom', age:, deposit: }, {name:'Tom', age:, deposit: }, {name:'Tom Senior', age:, deposit: }, {name:'May', age:, deposit: }, {name:'Jack', age:, deposit:}, {name:'Alice', age:, deposit: }]">
   <!--deposit前面的'-'表示deposit这列倒叙排序,默认为顺序排序
   参数reverseOrder:true表示结果集倒叙显示-->
   <div ng-repeat="u in myArr | orderBy:['name','-deposit']:true">
     <p>Name:{{u.name}}</p>
     <p>Deposit:{{u.deposit}}</p>
     <p>Age:{{u.age}}</p>
     <br />
   </div>
 </div>
로그인 후 복사

自定义Filter

和Directive一样,如果内建的Filter不能满足你的需求,你当然可以定义一个专属于你自己的Filter。我们来做一个自己的Filter:capitalize_as_you_want,该Filter会使你输入的字符串中的首字母、指定index位置字母以及指定的字母全部大写。

方法原型:

复制代码 代码如下:

function (input, capitalize_index, specified_char)

完整的示例代码:

<!DOCTYPE>
 <html>
 <head>
   <script src="/Scripts/angular.js"></script>
   <script type="text/javascript">
     (function () {
       var app = angular.module('ngCustomFilterTest', []);
       app.filter('capitalize_as_you_want', function () {
         return function (input, capitalize_index, specified_char) {
           input = input || '';
           var output = '';
           var customCapIndex = capitalize_index || -;
           var specifiedChar = specified_char || '';
           for (var i = ; i < input.length; i++) {
             // 首字母肯定是大写的, 指定的index的字母也大写
             if (i === || i === customCapIndex) {
               output += input[i].toUpperCase();
             }
             else {
               // 指定的字母也大写
               if (specified_char != '' && input[i] === specified_char) {
                 output += input[i].toUpperCase();
               }
               else {
                 output += input[i];
               }
             }
           }
           return output;
         };
       });
     })();
   </script>
 </head>
 <body ng-app="ngCustomFilterTest">
   <input ng-model="yourinput" type="text">
   <br />
   Result: {{ yourinput | capitalize_as_you_want::'b' }}
 </body>
 </html>
로그인 후 복사

好了,本篇讲了AngularJS中的Filter,看完这篇后,我们可以利用好Filter非常方便的使数据能按我们的要求进行展示,从而使页面变得更生动。

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿