模仿著我要搞了個AngularJS Form,但是問題來了。。。。
發現初始化時候ng-model 跟 input 標籤裡的 value 不默契,衝突。。
後來想再AngularJS controller 裡預先賦值 $scope.formData = {‘name':’張三’};
可以通過php程式把值賦到這個AngularJS controller裡
代碼如下 |
複製代碼 |
<!-- AngularJS controller --> <script> var formApp = angular.module('formApp', []); function formController($scope, $http) { $scope.formData = {'name':'張三','remark':'備忘'}; $scope.myForm = function() { $http({ method : 'POST', url : '/role/edit', data : $.param($scope.formData), // pass in data as strings headers : { 'Content-Type': 'application/x-www-form-urlencoded' } // set the headers so angular passing info as form data (not request payload) }) .success(function(data) { console.log(data); if (!data.success) { } else { } }); }; } </script> |
<!--對應form裡的input調整-->
代碼如下 |
複製代碼 |
<input type="text" name="name" ng-model="formData.name" class="form-control" placeholder="Role Name"> |
後來又搜啊搜 發現還有其他辦法,這麼個東東 ng-init=”formData.name=’張三'”
代碼如下 |
複製代碼 |
<input type="text" name="name" ng-model="formData.name" ng-init="formData.name='張三'" value=""> |
好了,上面非常的簡單,我們再來看
事件
AngularJS提供可與HTML控制項相關聯的多個事件。例如ng-click通常與按鈕相關聯。以下是AngularJS支援的事件。
ng-click
ng-dbl-click
ng-mousedown
ng-mouseup
ng-mouseenter
ng-mouseleave
ng-mousemove
ng-mouseover
ng-keydown
ng-keyup
ng-keypress
ng-change
ng-click
使用點擊一個按鈕的指令,表單重設資料。
代碼如下 |
複製代碼 |
<input name="firstname" type="text" ng-model="firstName" required> <input name="lastname" type="text" ng-model="lastName" required> <input name="email" type="email" ng-model="email" required> <button ng-click="reset()">Reset</button> <script> function studentController($scope) { $scope.reset = function(){ $scope.firstName = "Mahesh"; $scope.lastName = "Parashar"; $scope.email = "MaheshParashar@yiibai.com"; } $scope.reset(); } </script>
|
驗證資料
可使用下面跟蹤誤差。
$dirty - 規定值已被改變。
$invalid- 該值的狀態是無效的。
$error- 指出確切的錯誤。
例子
下面的例子將展示上述所有指令。
代碼如下 |
複製代碼 |
testAngularJS.html <html> <head> <title>Angular JS Forms</title> <style> table, th , td { border: 1px solid grey; border-collapse: collapse; padding: 5px; } table tr:nth-child(odd) { background-color: #f2f2f2; } table tr:nth-child(even) { background-color: #ffffff; } </style> </head> <body> <h2>AngularJS Sample Application</h2> <div ng-app="" ng-controller="studentController"> <form name="studentForm" novalidate> <table border="0"> <tr><td>Enter first name:</td><td><input name="firstname" type="text" ng-model="firstName" required> <span style="color:red" ng-show="studentForm.firstname.$dirty && studentForm.firstname.$invalid"> <span ng-show="studentForm.firstname.$error.required">First Name is required.</span> </span> </td></tr> <tr><td>Enter last name: </td><td><input name="lastname" type="text" ng-model="lastName" required> <span style="color:red" ng-show="studentForm.lastname.$dirty && studentForm.lastname.$invalid"> <span ng-show="studentForm.lastname.$error.required">Last Name is required.</span> </span> </td></tr> <tr><td>Email: </td><td><input name="email" type="email" ng-model="email" length="100" required> <span style="color:red" ng-show="studentForm.email.$dirty && studentForm.email.$invalid"> <span ng-show="studentForm.email.$error.required">Email is required.</span> <span ng-show="studentForm.email.$error.email">Invalid email address.</span> </span> </td></tr> <tr><td><button ng-click="reset()">Reset</button></td><td><button ng-disabled="studentForm.firstname.$dirty && studentForm.firstname.$invalid || studentForm.lastname.$dirty && studentForm.lastname.$invalid || studentForm.email.$dirty && studentForm.email.$invalid" ng-click="submit()">Submit</button></td></tr> </table> </form> </div> <script> function studentController($scope) { $scope.reset = function(){ $scope.firstName = "Mahesh"; $scope.lastName = "Parashar"; $scope.email = "MaheshParashar@yiibai.com"; } $scope.reset(); } </script> <script src="angular.min.js"></script> </body> </html>
|
輸出
在Web瀏覽器開啟textAngularJS.html。看到結果如下。
常用的表單驗證指令
1. 必填項驗證
某個表單輸入是否已填寫,只要在輸入欄位元素上添加HTML5標記required即可:
<input type="text" required />
2. 最小長度
驗證表單輸入的文本長度是否大於某個最小值,在輸入欄位上使用指令ng-minleng= "{number}":
<input type="text" ng-minlength="5" />
3. 最大長度
驗證表單輸入的文本長度是否小於或等於某個最大值,在輸入欄位上使用指令ng-maxlength="{number}":
<input type="text" ng-maxlength="20" />
4. 模式比對
使用ng-pattern="/PATTERN/"來確保輸入能夠匹配指定的Regex:
<input type="text" ng-pattern="/[a-zA-Z]/" />
5. 電子郵件
驗證輸入內容是否是電子郵件,只要像下面這樣將input的類型設定為email即可:
<input type="email" name="email" ng-model="user.email" />
6. 數字
驗證輸入內容是否是數字,將input的類型設定為number:
<input type="number" name="age" ng-model="user.age" />
7. URL
驗證輸入內容是否是URL,將input的類型設定為 url:
<input type="url" name="homepage" ng-model="user.facebook_url" />