Para un caso de uso específico, tengo que enviar un formulario único a la "antigua". Significa que uso un formulario con action = "". La respuesta se transmite, por lo que no estoy volviendo a cargar la página. Soy completamente consciente de que una aplicación típica de AngularJS no enviaría un formulario de esa manera, pero hasta ahora no tengo otra opción.
Dicho esto, traté de llenar algunos campos ocultos de Angular:
<input type="hidden" name="someData" ng-model="data" /> {{data}}
Tenga en cuenta que se muestra el valor correcto en los datos.
El formulario se parece a un formulario estándar:
<form id="aaa" name="aaa" action="/reports/aaa.html" method="post">
...
<input type="submit" value="Export" />
</form>
Si presiono enviar, no se envía ningún valor al servidor. Si cambio el campo de entrada para escribir "texto", funciona como se esperaba. Mi suposición es que el campo oculto no está realmente poblado, mientras que el campo de texto en realidad se muestra debido al enlace bidireccional.
¿Alguna idea de cómo puedo enviar un campo oculto poblado por AngularJS?
fuente
display: none;
? Es feo aunque. Angular ignora los elementos ocultos.<input type="hidden" required ng-model="data.userid" ng-init="data.userid=pivot.id" />
. Puede que esta no sea la forma correcta de hacerlo, pero funciona para mí.Respuestas:
No puede usar doble enlace con campo oculto. La solución es usar corchetes:
EDITAR: Vea este hilo en github: https://github.com/angular/angular.js/pull/2574
EDITAR:
Desde Angular 1.2, puede usar la directiva 'ng-value' para vincular una expresión al atributo de valor de entrada. Esta directiva debe usarse con radio de entrada o casilla de verificación pero funciona bien con entrada oculta.
Aquí está la solución usando ng-value:
Aquí hay un violín que usa ng-value con una entrada oculta: http://jsfiddle.net/6SD9N
fuente
Se puede utilizar siempre una
type=text
ydisplay:none;
ya no hace caso angular elementos ocultos. Como dice OP, normalmente no harías esto, pero esto parece un caso especial.fuente
En el controlador:
En la vista:
fuente
entityId
sientityId
es una matrizHe encontrado una buena solución escrita por Mike en sapiensworks . Es tan simple como usar una directiva que vigila los cambios en su modelo:
y luego vincula tu entrada:
Pero la solución proporcionada por tymeJV podría ser mejor ya que la entrada oculta no activa el evento de cambio en javascript como yycorman dijo en esta publicación, por lo que al cambiar el valor a través de un complemento jQuery aún funcionará.
Editar He cambiado la directiva para aplicar un nuevo valor al modelo cuando se activa el evento de cambio, por lo que funcionará como un texto de entrada.
así que cuando desencadena un
$("#yourInputHidden").trigger('change')
evento con jQuery, también actualizará el modelo enlazado.fuente
Encontró un comportamiento extraño sobre este valor oculto () y no podemos hacerlo funcionar.
Después de jugar, descubrimos que la mejor manera es definir el valor en el controlador después del alcance del formulario.
fuente
Lo logré a través de -
fuente
Actualice la respuesta de @tymeJV, por ejemplo:
fuente
Tenía el mismo problema, realmente necesito enviar una clave desde mi script jsp a java. Pasé alrededor de 4 horas o más de mi día para resolverlo.
Incluyo esta etiqueta en mi JavaScript / JSP:
El resultado fue: Portfólio 1 criado com sucesso! ID = 3.
Atentamente
fuente
En caso de que alguien todavía tenga problemas con esto, tuve un problema similar al intentar realizar un seguimiento de la sesión de usuario / ID de usuario en un formulario de varias páginas
Lo arreglé agregando
.when ("/ q2 /: uid" en la ruta:
Y agregó esto como un campo oculto para pasar parámetros entre páginas de formularios web
<< input type = "hidden" required ng-model = "formData.userid" ng-init = "formData.userid = uid" />
Soy nuevo en Angular, así que no estoy seguro de que sea la mejor solución posible, pero parece que funciona bien para mí ahora
fuente
Asigne directamente el valor al modelo en el
data-ng-value
atributo. Dado que el intérprete angular no reconoce los campos ocultos como parte de ngModel.fuente
Yo uso un javascript clásico para establecer el valor de entrada oculta
fuente
El siguiente código funcionará para este IFF en el mismo orden en que se menciona, asegúrese de que su pedido sea tipo y luego nombre, ng-model ng-init, valor. Eso es.
fuente
Aquí me gustaría compartir mi código de trabajo:
fuente