2016-03-16 93 views
0

我有一種情況,我想將$ setPristine設置爲false。在一個表單中,我有一個多選的下拉菜單,它不會被$ pristine驗證。我已經編寫了一個單獨的事件來驗證多選下拉列表中的更改,但$ pristine仍然驗證我的屏幕爲「真」,這不是我所期望的。與此同時,我無法刪除$ pristine,因爲它驗證了表單中的其他字段。

<button type="button" class="btn btn-primary" ng-click="correctProperty()" ng-disabled="entityPropertyForm.$pristine || propertyCorrected || dropDownChanged">Save</button> 

整個NG-禁用狀況如預期,因爲$質樸的是「真正的」多選下拉被改變後,即使不工作。我們可以在angularjs中設置$ setPristine爲false嗎?

回答

1

您可以使用角的FormController的$setDirty()方法,這將使窗體的$dirty財產true$pristine財產假。

這不完全清楚,你應該這樣做,從你所示的代碼,但是當用戶交互瓦特/菜單中你可以這樣做:

$scope.entityPropertyForm.$setDirty(); 

如果您使用的是controllerAs語法,需要與控制器的名稱前綴表單的名字:

<form name="myController.entityPropertyForm"> 
... 
</form> 

,然後控制器代碼將是:

this.entityPropertyForm.$setDirty();