Только для тех, кто хочет получить $setPristine
без необходимости обновления до v1.1.x, вот функция, которую я использовал для имитации функции $setPristine
. Я не хотел использовать v1.1.5, потому что один из компонентов AngularUI, который я использовал, не совместим.
var setPristine = function(form){
if(form.$setPristine){//only supported from v1.1.x
form.$setPristine();
}else{
/*
*Underscore looping form properties, you can use for loop too like:
*for(var i in form){
* var input = form[i]; ...
*/
_.each(form, function (input)
{
if (input.$dirty) {
input.$dirty = false;
}
});
}
};
Обратите внимание, что это только делает $dirty
поля чистыми и помочь изменения состояния «показать ошибки», как $scope.myForm.myField.$dirty && $scope.myForm.myField.$invalid
.
Другие части объекта формы (например, классы css) по-прежнему необходимо учитывать, но это решает мою проблему: скрыть сообщения об ошибках.
Посмотрев на свой код, я думаю, что часть проблемы заключается в том, что data.name очищается от обычного углового пути. Что делать, если вы объявляете данные в своей модели и фактически используете $ scope.data.name = '' в методе сброса. В противном случае вы можете попробовать $ scope.apply(); Я думаю, что модель все еще грязная, и поэтому она не работает. –