① angularjs為什麼當前頁面做任何操作filter都會執行
1. currency (貨幣處理)
使用currency可以將數字格式化為貨幣,默認是美元符號,你可以自己傳入所需的符號,例如我傳入人民幣:
{{num | currency : '¥'}}
2. date (日期格式化)
原生的js對日期的格式化能力有限,ng提供的date過濾器基本可以滿足一般的格式化要求。用法如下:
{{date | date : 'yyyy-MM-dd hh:mm:ss EEEE'}}
參數用來指定所要的格式,y M d h m s E 分別表示 年 月 日 時 分 秒 星期,可以自由組合它們。也可以使用不同的個數來限制格式化的位數。另外參數也可以使用特定的描述性字元串,例如「shortTime」將會把時間格式為12:05 pm這樣的。ng提供了八種描述性的字元串,這些有點多餘,完全可以根據自己的意願組合出想要的格式,不願意去記這么多單詞~
3. filter(匹配子串)
這個名叫filter的filter。用來處理一個數組,然後可以過濾出含有某個子串的元素,作為一個子數組來返回。可以是字元串數組,也可以是對象數組。如果是對象數組,可以匹配屬性的值。它接收一個參數,用來定義子串的匹配規則。下面舉個例子說明一下參數的用法,用現在特別火的幾個孩子定義了一個數組:
$scope.childrenArray = [
{name:'kimi',age:3},
{name:'cindy',age:4},
{name:'anglar',age:4},
{name:'shitou',age:6},
{name:'tiantian',age:5}
];
$scope.func = function(e){return e.age>4;}{{ childrenArray | filter : 'a' }} //匹配屬性值中含有a的
{{ childrenArray | filter : 4 }} //匹配屬性值中含有4的
{{ childrenArray | filter : {name : 'i'} }} //參數是對象,匹配name屬性中含有i的
{{childrenArray | filter : func }} //參數是函數,指定返回age>4的
4. json(格式化json對象)
json過濾器可以把一個js對象格式化為json字元串,沒有參數。這東西有什麼用呢,我一般也不會在頁面上輸出一個json串啊,官網說它可以用來進行調試,嗯,是個不錯的選擇。或者,也可以用在js中使用,作用就和熟悉的JSON.stringify()一樣。用法超級簡單:
{{ jsonTest | json}}
5. limitTo(限制數組長度或字元串長度)
limitTo過濾器用來截取數組或字元串,接收一個參數用來指定截取的長度,如果參數是負值,則從數組尾部開始截取。個人覺得這個filter有點雞肋,首先只能從數組或字元串的開頭/尾部進行截取,其次,js原生的函數就可以代替它了,看看怎麼用吧:
{{ childrenArray | limitTo : 2 }} //將會顯示數組中的前兩項
6. lowercase(小寫)
把數據轉化為全部小寫。太簡單了,不多解釋。同樣是很雞肋的一個filter,沒有參數,只能把整個字元串變為小寫,不能指定字母。
7. uppercase(大寫)
同上。
8. number(格式化數字)
number過濾器可以為一個數字加上千位分割,像這樣,123,456,789。同時接收一個參數,可以指定float類型保留幾位小數:
{{ num | number : 2 }}
9. orderBy(排序)
orderBy過濾器可以將一個數組中的元素進行排序,接收一個參數來指定排序規則,參數可以是一個字元串,表示以該屬性名稱進行排序。
② angular寫的過濾器 怎麼引入
1.過濾器是用來格式化需要展示給用戶的數據,AngularJS中含有實用的內置過濾器可以使用,也支持用戶進行自定義過濾器;
2.過濾器調用方式:
(1) 在HTML的模板中綁定符合{{}} 內通過 | 符號來調用過濾器; 比如{{ name | uppercase }} ------將name字元串中的每個字元轉為大寫字母;
(2) 在JavaScript中可以通過$filter 來調用過濾器,比如:
[javascript] view plain
app.controller("demoController",['$scope','$filter',function($scope,$filter){
$scope.name = $filter("uppercase")('ari');
}]);
(3) 在HTML中使用過濾器時,如需要傳遞參數給過濾器,則需要在過濾器後面加冒號即可,若有多個參數,則在每個參數後面加入冒號即可,比如 {{ 123.4567 | number : 2}} 頁面展示為 123.46
3.angularJS 提供的內置過濾器:
(1) currency: 可以將一個數值格式化為貨幣格式,默認的貨幣符號是當前客戶端所處區域的貨幣符號;
(2)date:將日期格式化為需要的格式,具體的格式參考其API;
(3) filter:從給定數組中選擇一個子集,並將其生成一個新數組返回。filter過濾器的第一個參數可以是字元串、對象或是一個用來從數組中選擇元素函數,傳入不同類型時表現:
1) 字元串:返回所有包含這個字元串的元素,如想返回不包含該字元串的所有元素,則在參數之前加 ! ;
2) 對象:AngularJS會將待過濾對象的屬性同這個對象中的同名屬性進行比較,若屬性值是字元串就會判斷是否包含該字元串;若希望對全部屬性進行對比,將$作為鍵名;
3) 函數: 對待過濾數組的每個元素執行此函數,返回非假值的元素會出現在新的數組中並返回;
filter的第二個參數可以是:
1)true: 用angular.equals(excepted,actual)對兩個值進行嚴格比較;
2) false:進行區分大小寫的子字元串比較;
3)函數:運行這個函數,如果返回真值就接受這個元素;
(4) json:將一個JSON或JavaScript對象轉換成字元串;
(5) limitTo :根據傳入的參數生成一個新的數組或字元串,新的數組或字元串的長度取決於傳入的參數,通過傳入參數的正負值來控制從前面還是後面進行截取;
如果傳入的長度大於被過濾的數組或字元串的長度,則整個數組或字元串都會被返回;
{{ San is very people | limitTo : 3}} ----> San {{ San is very people | limitTo : -3}} ---->ple
(6)lowercase 將過濾字元串轉為小寫字母; uppercase 將過濾字元串轉為大寫字母;
(7) number :將數字格式化成文本,第二個參數是可選,用於控制小數點後截取的位數; 如果傳入的是非數字字元,則返回空字元串;
(8) orderBy:用表達式對指定的數組進行排序,可以接受兩個參數,第一個參數是必須的,第二個參數是可選,第一個參數的情況:
1) 函數:當第一個參數是函數時,該函數會被當作待排序對象的getter方法;
2)字元串:對這個字元串進行解析的結果將決定數組元素的排序方式,可以使用+ 或 - 來強制進行升序和降序;
3)數組:在排序表達式中使用數組元素作為謂詞; 第二個參數用來控制排序的方向;
4.自定義過濾器:
此過濾器用來定義一個名為myFilter的過濾器,作用是將傳入的字元串的首字母轉為大寫字母;
[javascript] view plain
angular.mole("testFilter",[]).filter("myFilter",function(){
return function(input) {
if (input) {
return input[0].toUpperCase() + input.slice(1);
}
}
});
5.表單驗證:
(1) 若想要屏蔽瀏覽器對表單的默認驗證行為,則在表單元素上添加 novalidate標記,若想使用angularJS 的表單驗證功能,需要保證form有name屬性;
(2) input上可以使用的驗證選項:
1)required:驗證當前input是否有值,必填項;
2) ng-minlength/ng-maxlength:當前input能輸入的最大長度和最小長度; <input name="text" ng-minlength="2" ng-maxlength="20"/>
3) ng-pattern :模式匹配,用來確保輸入能夠匹配指定的正則表達式;
4) email:驗證輸入的內容是否是電子郵件,<input type="email" name="email"/>
5) number:驗證輸入的內容是否是數字 <input type="number" name="age"/>
6) URL:驗證輸入的內容是否是URL <input type="url" name="homespace"/>
在javaScript中可以使用這些屬性去對表單做出實時響應 通過formName.inputFieldName.property格式訪問屬性:
1) formName.inputFieldName.$pristine:用來判斷用戶是否修改了表單,若未修改則返回true,若修改過,則返回false;
2) formName.inputFieldName.$dirty:只用用戶修改過表單,無論輸入是否通過驗證,該值都返回true;
3) fornName.inputFieldName.$valid:用來判斷表單的內容是否合法,若表單內容是合法的則返回true;
4) fornName.inputFieldName.$invalid:用來判斷表單的內容是否不合法,若表單內容是不合法的則返回true;
5) fornName.inputFieldName.$error:用來判斷表單所有的驗證內容以及內容是否合法,如果驗證失敗,則屬性值為true,若輸入欄位的值通過驗證則返回false;
(3) $parsers:
當用戶同控制器進行交互並且ngModelController中的$setViewValue()方法被調用時,$parsers數組中的函數會以流水線的形式被逐個調用,第一個調用值會變傳入到第二個$parse中;調用函數時,可以使用$setValidity()函數去設置表單的合法性;
(4) $formatters:
當綁定的ngModel值發生變化,並經過$parsers數組中解析器處理後,這個值會被創遞給$formatters流水線,此函數可以修改並格式化這些值;
(3) ngMessages( 在AngularJS 1.3+以上版本中才包含此指令)
1)ngMessages是angularJs的一個獨立模塊,故需要手動載入 指令為 $ bower install --save angular-messages或在angular官網上下載此文件,然後通過html引入;
2)ngMessages還需要作為引用程序的依賴模塊引入,比如angular.mole("myApp",[ngMessages]);
③ angular.js中已經得到日期為yyyymmdd,如何在頁面上展現yyyy-mm-dd
用時間格式的插件 在success裡面進行操作之後渲染到頁面上去
④ angular中怎麼把格式化的日期轉化成時間戳
如果有日期對象的話,直接valueOf()...
(new Date)
// Wed May 06 2015 16:01:58 GMT+0800 (CST)
(new Date).valueOf()
// 1430899328358
var date = 'Wed May 06 2015 16:01:58 GMT+0800 (CST)';
date = new Date(date);
date.valueOf()
⑤ angularjs怎麼用過濾器篩選日期
ng-repeat="ramCount in ramCountList track by $index | orderBy: ramCount" track by $index 這個是過濾重復值 ramCount是數字類型的,然後按照專ramCount的值進行屬升排序
⑥ angularjs怎麼把寫日期驗證
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body ng-controller="reserveController">
<form name="serviceform" novalidate>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<th><font color="#FF0000">*</font>起始日期:</th>
<td>
<input type="date" ng-model="reserveData.start_DATE" ng-pattern="Redates" required>
</td>
</tr>
<tr>
<th><font color="#FF0000">*</font>結束時間:</th>
<td>
<input type="date" id="inputDate3" ng-model="reserveData.end_DATE" required>
<br />
<span ng-show="serviceform.inputDate3.$error.pattern">結束時間不能小於起始日期</span>
</td>
</tr>
</table>
</form>
</body>
</html>
⑦ angularjs自定義過濾器怎麼寫
過濾器(filter)正如其名,作用就是接收一個輸入,通過某個規則進行處理,然後返回處回理後的結果。主要答用在數據的格式化上,例如獲取一個數組中的子集,對數組中的元素進行排序等。ng內置了一些過濾器,它們是:currency(貨幣)、date(日期)、filter(子串匹配)、json(格式化json對象)、limitTo(限制個數)、lowercase(小寫)、uppercase(大寫)、number(數字)、orderBy(排序)。總共九種。除此之外還可以自定義過濾器,這個就強大了,可以滿足任何要求的數據處理。
AngularJS中為我們提供了一些內置的過濾器,這里列舉一些自定義過濾器的場景。
⑧ angularjs中有多個過濾器使用方法
一、在視圖模板(View Template)中使用
在表達式中應用Filters (過濾器)
需要遵循格式如下:
{{ expression | filter }} 即 {{ 表達式 | 過濾器 }}
例如:{{ 12 | currency }} 輸出為 $12.00在輸出結果中應用Filters (過濾器)
通俗點講就是Filter的疊加--前一filter的輸出結果作為後一filter的輸入數據源.
需要遵循格式如下:
{{ expression | filter1 | filter2 | ... }} 即 表達式(expression)使用filter1過濾後再使用filter2過濾...
帶參數的Filter
Filter後面可以跟一個或多個參數,用來幫助實現特殊要求、需求的filter.
需要遵循格式如下:
{{ expression | filter:argument1:argument2:... }}
示例: {{ 1234 | number:2 }} = 1,234.00END
二、使用 AngluarJS 內置Filter
AngularJS為我們提供了9個內建的過濾器
分別是currency, date, filter, json, limitTo, uppercase, lowercase, number, orderBy。
具體的用法在AngularJS的文檔中都有詳細說明。下面只說幾個常用的。
currency filter(貨幣過濾器)
currency – 用來將變數轉換成貨幣表現形式
如:{{ amount | currency}}
uppercase/lowercase filter(字母大小寫filter)如:
{{ "lower cap string" | uppercase }}
<input ng-model="userInput"> Uppercased: {{ userInput | uppercase }}
date filter (日期filter)
如:
{{ 1304375948024 | date }}
{{ 1304375948024 | date:"MM/dd/yyyy @ h:mma" }}
json filter
如:
{{ {foo: "bar", baz: 23} | json }}
END
在controllers, services和drictives中使用filter1可以在AngularJS的controller, service或者driective中使用filter, 這時候你需要將依賴的filter名字加入到controller, service或者directive的依賴中去。
2在controller中直接使用filter, 這樣controller可以根據自身需要而適時調用filterEND
三、自定義filter(過濾器)
1AngularJS編寫自定義過濾器的形式和AngularJS的factory service非常相像,一定記得它返回一個對象或者是一個函數即可,編寫的時候,只需要一個帶有一個以上參數的函數即可。
2格式大致如:
app.filter('filter(過濾器)名稱',function(){return function(需要過濾的對象,過濾器參數1,過濾器參數2,...){//...執行業務邏輯代碼return 處理後的對象;
}
});
⑨ angular ui-bootstrap日期控制項怎麼顯示成中文
1.引入中文國際化文件angular-locale_zh-cn.js 然後大部分控制項就可以顯示中文了。
2. 還不夠,有些按鈕(today,clear,close)還不能顯示中文,
2.1)需要修改angular-locale_zh-cn.js ,對DATETIME_FORMATS增加三個中文鍵值對:
"DATETIME_FORMATS": {
"TODAY":"\u4eca\u5929",
"CLEAR":"\u6e05\u7a7a",
"CLOSE":"\u5173\u95ed",
2.2) 還不行,today,clear,close等按鈕還不能國際化,還需修改ui-bootstrap-tpls-0.13.0.js
主要修改的ui-bootstrap-tpls-0.13.0.js文件中指令datepickerPopup,
你可以參照我的github fork的分支作的修改:
3.對於第2步修改,你覺得麻煩的話,我可以教你一個省事的法子,這基於你對angular 指令定義要有較好的理解,
具體做法是,在datepicker-popup指令定義的地方,增加屬性current-text,clear-text, close-text的定義
例如:current-text="今天"
<div class="col-md-6">
<p class="input-group">
<input type="date" class="form-control" current-text="今天" datepicker-popup ng-model="dt" is-open="opened" min-date="minDate" max-date="'2015-06-22'" datepicker-options="dateOptions" date-disabled="disabled(date, mode)" ng-required="true" close-text="Close" />
<span class="input-group-btn">
<button type="button" class="btn btn-default" ng-click="open($event)"><i class="glyphicon glyphicon-calendar"></i></button>
</span>
</p>
</div>
------------------------------------------------------------------------------------------------------------------------------------------------------
2.2具體修改以下部分:
修改 ui-bootstrap-tpls-0.13.0.js的指令datepickerPopup
指令datepickerPopup的定義依賴增加$locale,並新加以下片段
scope['currentText']=$locale.DATETIME_FORMATS.TODAY||scope['currentText'];
scope['clearText']=$locale.DATETIME_FORMATS.CLEAR||scope['clearText'];
scope['closeText']=$locale.DATETIME_FORMATS.CLOSE||scope['closeText'];
⑩ angular2 怎樣用身份證判斷出生日期、出生省市/男女
第17位數字表示性別:奇數表示男性,偶數表示女性。
身份證號碼的意義
①前1、2位數字表示:所在省份的代碼,河南的省份代碼是41哦!
②第3、4位數字表示:所在城市的代碼;
③第5、6位數字表示:所在區縣的代碼;
④第7~14位數字表示:出生年、月、日;
⑤第15、16位數字表示:所在地的派出所的代碼;
⑥第17位數字表示性別:奇數表示男性,偶數表示女性;
⑦第18位數字是校檢碼:也有的說是個人信息碼,一般是隨計算機隨機產生,用來檢驗身份證的正確性。校檢碼可以是0~9的數字,有時也用x表示。