2015-01-31 23 views
2

我想向AngularJS添加一些小功能。 這是關於表單驗證。 讓我們假設我有一個表單。 我填充它並將填充的對象發送到服務器。 服務器用這個對象做了一些動作,並決定'標題'字段不正確。 服務器返回有關無效標題的消息(我們還假設此驗證可以僅在服務器上進行,以避免客戶端驗證解決方法)。重置表格中的所有錯誤

我以編程方式添加了新的無效錯誤。 ($ scope.myForm.title。$ setValidity('bad',false)); 我有.ng-invalid-bad類,用紅色邊框標記我的標題字段。 好的。 我更改標題並將此對象發送到服務器。 但是在這個時候,我的'描述'值與標題衝突,服務器答案'描述錯誤'。 因此,現在我必須重置所有字段的所有有效性,並向'description'字段添加新的'bad'有效性。但是我沒有找到重置整個表單的功能。 我試過$ setPristine和其他,但字段仍然有'ng-invalid-bad'類。只有當我爲每個字段調用$ setValidity('bad',true)時,我才能刪除它。

我在本地拷貝中爲這個功能做了一些angular.js的更新。

問題: 1.我錯過了關於此功能的文檔中的內容嗎? 2.如果沒有 - 我可以開始準備我的PR角度與此功能?

example: http://plnkr.co/edit/aev16Y3cAxTljhctUDMI  
  • 嘗試,以填補第一輸入,離開第二個空。點擊GO!您應該看到標有紅色邊框的第二個字段。
  • 清理第一個輸入,然後用一些文本填充第二個輸入。點擊GO!您應該看到標有紅色邊框的所有輸入。
+0

$ setPristine()應該做的伎倆。你有沒有提供任何代碼或者複製你的問題的plunkr? – mengstrom 2015-01-31 22:18:47

+0

將plunkr鏈接添加到問題。 – user3187702 2015-01-31 23:32:18

+0

似乎將有效性設置爲true是唯一的方法,因爲$ setPristine只重置窗體上的髒,原始和提交狀態以及所有控件的髒和原始狀態。 – mengstrom 2015-02-01 00:40:29

回答

0

如果您需要重置表單中的所有字段,只需在表單中添加一個重置按鈕即可。

<!DOCTYPE html> 
<html ng-app="formValidationApp"> 

<head> 
    <script src="https://code.angularjs.org/1.4.0-beta.2/angular.js" data-semver="1.4.0-beta.2" data-require="[email protected]"></script> 
    <link rel="stylesheet" href="style.css" /> 
    <script src="script.js"></script> 
</head> 

<body ng-controller="controllers.root"> 
    <form name="superform" novalidate> 
    <input name="title" ng-model="superObject.title" /> 
    <br/> 
    <input name="description" ng-model="superObject.description" /> 
    <br/> 
    <input type="reset" /> 
    <button ng-click="go()">go!</button> 
    </form> 
</body> 

</html> 
+0

我只需要重置錯誤。沒有內容或別的東西。 – user3187702 2015-02-02 23:32:58

+0

你想通過點擊按鈕來重置這些錯誤嗎?是你需要的方式嗎? – Sanjaya 2015-02-03 14:15:21

+0

是的,類似的東西。 – user3187702 2015-02-09 15:09:48