/ / Angular JS vaciando el campo de entrada del formulario del controlador cuando se usa ng-model - angularjs, input, angularjs-scope, angular-ngmodel

Campo de entrada de formulario de vaciado angular JS del controlador cuando se usa ng-model - angularjs, input, angularjs-scope, angular-ngmodel

Tengo una forma realmente simple con un par de campos de entrada. Aquí hay uno:

            <label class="item item-input item-stacked-label">
<span class="input-label">First Name</span>
<input type="text" ng-model="signInData.firstName" placeholder="">
</label>

Cuando envío el formulario y devuelve verdadero de la solicitud AJAX, simplemente quiero vaciar el campo de entrada pero no funciona. Puede que me falte algo simple.

Aquí está mi código de controlador donde estoy tratando de vaciar:

        $scope.signInData.firstName = "";

Esto está vaciando el modelo del ámbito, lo que puedo ver porque estoy registrando la consola del objeto de ámbito, pero simplemente no vacía el valor.

He buscado en Google por un tiempo y he visto cosas como el método $ setPristine, etc., pero nada de esto está funcionando tampoco.

EDITAR

    $http({
url: "sign_in_app",
method: "POST",
data: {"firstName": signInData.firstName}
}).then(function(response) {
if(response.data.response == "error"){
$scope.errorSignIn = "Sorry, there was an error signing in.";
}else{
$scope.errorSignIn = null;
$scope.signInData.firstName = "";
$scope.signInForm = null;
}
}

EDITAR - el formulario

    <form ng-submit="signIn(signInData)" id="signInForm" name="signInForm">
<div ng-bind-html="errorSignIn" class="center error"></div>
<div class="list">
<label class="item item-input item-stacked-label">
<span class="input-label">First Name</span>
<input type="text" ng-model="signInData.firstName" placeholder="">
</label>

<label class="item">
<button class="button button-full button" type="submit">Sign in</button>
</label>
</div>
</form>

EDIT 3 - LLAMADA HTTP ACTUALIZADA

    $http({
url: "/sign_in/sign_in_app",
method: "POST",
data: {"firstName": $scope.signInData.firstName, "lastName": $scope.signInData.lastName}
}).then(function(response) {
if(response.data.response == "error"){
$scope.errorSignIn = "Sorry, there was an error signing in.";
}else{
$scope.errorSignIn = null;
$scope.signInData.firstName = "";
$scope.signInForm = null;
}

}

Respuestas

1 para la respuesta № 1

Prueba esto: elimina el signInData desde el ng-submit, altere su $scope.signIn() para que ya no lo necesites, usa el $scope.signInData oponerse a establecer todos los valores para su $http llamada (que, por cierto, probablemente debería estar en unservicio para mantener su controlador más limpio y seguir los patrones típicos de diseño angular) y luego ver si todavía tiene el problema de que sus entradas de formulario no se borran.

Mi sospecha es que porque estás pasando signInData a partir de ese momento comienza a operar en una copia del objeto de alcance y es por eso que borrar las propiedades no se comporta como esperaba.


1 para la respuesta № 2

$setPristine no limpia los campos de entrada. Puedes intentar usar $scope.signInData = {}; después de enviar el formulario