¿Cómo actualizar solo la vista con AngularJS?

publicado por: Anonymous

Cuando creo un registro debo recargar solamente la vista, actualmente recargo toda la página.

$scope.CrearUsuario = function(item)
    {
        $scope.item = item;
        $http({
            method: "POST",
            url: "../ws/usuarios",      
            data: {
                nombre1:        item.nombre1,
                nombre2:        item.nombre2,
                apellido1:      item.apellido1,
                apellido2:      item.apellido2,
                usuario:        item.usuario,
                password:       item.password,
                idtipousuario:  item.idtipousuario
            }
        }).then(function mySucces(response)
        {   
            var opts = {
                "closeButton": true,
                "debug": false,
                "positionClass": "toast-bottom-right",
                "onclick": null,
                "showDuration": "100",
                "hideDuration": "1000",
                "timeOut": "3000",
                "extendedTimeOut": "1000",
                "showEasing": "swing",
                "hideEasing": "linear",
                "showMethod": "fadeIn",
                "hideMethod": "fadeOut"
            };              
            toastr.success("Usuario creado correctamente.", "Exito !", opts);
            $rootScope.currentModal.close();
            window.location.reload();
        }, function myError(response){
            console.log("Error");
        });
    }

De esta forma, hago que recargue la página window.location.reload(); Como puedo recargar únicamente en la vista que estoy trabajando, la verdad no tengo mayor idea en esto.

solución

Si lo que dices que tienes en la vista es una lista de objetos para pintarlos por pantalla habrás usado un array.

Yo actualmente en mi aplicación lo que hago es volver a llamar al servicio y pintar los datos actualizados.

Para ello es necesario que primero establezcas la longitud del array en el que almacenas la respuesta a 0. Y después introduzcas dichos resultados de nuevo en él.

toastr.success("Usuario creado correctamente.", "Exito !", opts);
        $rootScope.currentModal.close();
        this.reloadView();
    }, function myError(response){


    reloadView(): void{
         this.arrayVista.length = 0;
         this.recuperarUsuarios();
     }

Y dentro de la función recuperarUsuarios() imagino que ya tendrás algo similar a

this.arrayVista = res

Yo es la única forma que he encontrado de conseguir lo que tu pides. De momento son pocos registros los que recupero por lo que la carga y el consumo de recursos no es gran cosa. No obstante cuando esto sea un problema simplemente con preparar el back para que permita paginación lo tendrías solventado.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *