2015-04-03 44 views
0

我試圖通過檢查它反對angularjs數據綁定W¯¯聽衆

/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i 

在標準的JS,我會用和事件偵聽器知道通過確保用戶在一個有效的電子郵件進入到驗證電子郵件領域當用戶觸發了keyup,但在Angular中,我懷疑有不同的方式通過「雙向數據綁定」來收聽數據。我如何通過角度控制器js完成同樣的任務?

+0

至少有3種我能想到的方式,但是既然你提到'keyup',或許你可以試試這個? https://docs.angularjs.org/api/ng/directive/ngKeyup#!/ – Claies 2015-04-03 14:03:41

+2

如何使用'input type =「email」',並讓Angular爲您提供標準的表單驗證框架?你正在重新發明輪子。 – 2015-04-03 14:04:04

回答

4

看一看輸入[郵件],角度的驗證:

https://docs.angularjs.org/api/ng/input/input%5Bemail%5D

有一個ngChange選項。

+0

這看起來不錯,但爲什麼角度認爲「user @ m」是一個有效的電子郵件地址?我在https://docs.angularjs.org/api/ng/input/input%5Bemail%5D – Jacksonkr 2015-04-03 14:12:05

+0

的例子中試過了。根據http://sphinx.mythic-beasts.com/~pdw/cgi-bin/ emailvalidate,這確實是有效的。 – 2015-04-03 14:30:39

+0

嗯,在此期間,我正在使用您的解決方案伴隨着'data-ng-pattern =「/^[_ a-z0-9] +(\。[_ a-z0-9] +)* @ [a-z0 -9 - ] +(\ [A-Z0-9 - 。] +)*(\ [AZ] {2,4})$ /「' – Jacksonkr 2015-04-27 18:31:25

0

有一種叫做$ watch的東西,或者是觀察者。你可以把它「監聽」的模型正在改變

scope.$watch('name', function(newValue, oldValue) { 
scope.counter = scope.counter + 1; 
}); 
在這個例子中

因此,每當模式「名」的變化,計數器由一個上升。你可以看到其他參數傳遞,oldVal和newVal,你可以交叉引用這些參數,如果有新的值,你可以設置你的邏輯來做,但這是你自己的決定。只要把你的正則表達式檢查到這個函數裏面,並把字段的模型從名字改爲你的。 *確保它在正確的控制器中^ _ ^。