tylko dla tych, którzy chcą dostać $setPristine
bez konieczności uaktualnienia do V1.1.x, tutaj jest funkcja Kiedyś symulować funkcję $setPristine
. Nie chciałem korzystać z wersji 1.5, ponieważ jeden z używanych przeze mnie komponentów AngularUI nie jest zgodny.
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;
}
});
}
};
Należy pamiętać, że to tylko sprawia $dirty
pola czyste i pomóc zmieniając „Pokaż błędzie” stan jak $scope.myForm.myField.$dirty && $scope.myForm.myField.$invalid
.
Inne części obiektu formularza (takie jak klasy css) muszą jeszcze rozważyć, ale to rozwiąże mój problem: ukryj komunikaty o błędach.
Patrząc na twój kod, myślę, że część problemu polega na tym, że data.name jest usuwana z regularnego, kanciastego sposobu. Co jeśli deklarujesz dane w swoim modelu i faktycznie używasz $ scope.data.name = '' w metodzie resetowania. W przeciwnym razie możesz spróbować $ scope.apply(); Myślę, że model jest nadal brudny i dlatego nie działa. –