2011-05-21 9 views
13

Los ejemplos de formulario de libro de cocina en el AngularJS site solo guardan el estado en el cliente. ¿Cómo me presento al servidor?AngularJS - ¿Cómo presento un formulario a un controlador en el servidor?

Alternativamente, ¿cómo uso jQuery's form.submit() en el formulario en la función ng:click="save()"?

Editar - 2 encontrado maneras de hacer esto (que también eliminan el código HTML Pegué antes - sólo se refiere al ejemplo de avanzada forma de libro de cocina de la fuente)

  1. http://webpac2.rot13.org:3000/conference/Work (por Dobrica Pavlinusic) para ir el modo AngularJS usando un recurso para enviar los datos al servidor en formato JSON. Tuve problemas con eso en el lado del servidor: AngularJS lo enviaba bien, pero los griales lo estaban destruyendo (según Firebug y solicitó contenido de longitud). Necesito investigar esto más. ¿Cómo cambio el tipo de contenido en angular para un método de recursos como $save()?

  2. Ponga un formulario y use un botón de enviar. Como no estoy haciendo una aplicación web de una sola página, utilicé este método. La mayoría de las validaciones estaban en el cliente y algunas más en el servidor, lo cual fue suficiente para mí.

Simplemente poniendo esto aquí para que alguien más pueda usarlo para posibles soluciones y el mejor enfoque.

+0

puedo mostrar su margen de beneficio y código actual? Re a tu PS: eso es quizás tan malo como podría ser bueno ... –

+0

@marcel - no renderizó correctamente mi copia pegar. Espero que puedas darle sentido a esto. Agradezca su ayuda –

+0

Puede mostrar el marcado de HTML a medida que se envía al navegador (use 'Ver código fuente'), por lo que no es necesario que sepa cómo se verá el HTML resultante. Después de todo, esto es lo que JavaScript verá. –

Respuesta

0

Por lo que sé, no hay realmente una buena manera de modificar los encabezados que los envíos angulares al servidor esperan para editing angular source. Esta es una mejora planificada, pero aún no está hecha.

Creo que angular google group podría ser el mejor lugar para hacer preguntas específicas como esta, ya que los desarrolladores son realmente amables y conocedores.

12

Nota, existe una separación estricta de vista (su plantilla html) y lógica (su código JS) - principalmente debido a la capacidad de prueba.

La forma correcta es simplemente enviar el modelo al servidor, usando recursos $ (REST) ​​o bajo nivel $ http. En lugar de hacer el trabajo en la plantilla.

simple ejemplo - plantilla HTML

First: <input type="text" ng-model="person.first" /> 
Last: <input type="text" ng-model="person.last" /> 
<button ng:click="save()">Save</button> 

JavaScript - controlador

function FormCntl($scope, $http) { 
    $scope.save = function() { 
    $http.put('/save.py', $scope.person); 
    }; 
} 
+0

si uso 'this.save = function ...', eso no funciona. Tengo que usar '$ scope.save = function ...' en el controlador. – Voles

+2

Gracias @Voles, actualizado a la sintaxis actual de v1 (la respuesta fue escrita en 0.9. * Sintaxis) – Vojta

+0

Cuando descargo la solicitud en el lado del servidor, no se envía nada.Es una matriz vacía: 'Log :: write (print_r ($ _ REQUEST, true))' – Michelle

Cuestiones relacionadas