Для конкретного случая использования я должен представить одну форму «по-старому». Значит, я использую форму с action = "". Ответ передается в потоковом режиме, поэтому я не перезагружаю страницу. Я полностью осознаю, что типичное приложение AngularJS не будет отправлять форму таким образом, но пока у меня нет другого выбора.
Тем не менее, я попытался заполнить некоторые скрытые поля из Angular:
<input type="hidden" name="someData" ng-model="data" /> {{data}}
Обратите внимание, правильное значение в данных отображается.
Форма выглядит как стандартная форма:
<form id="aaa" name="aaa" action="/reports/aaa.html" method="post">
...
<input type="submit" value="Export" />
</form>
Если я нажму "отправить", никакое значение не будет отправлено на сервер. Если я изменю поле ввода на тип «текст», оно будет работать как положено. Я предполагаю, что скрытое поле на самом деле не заполнено, в то время как текстовое поле фактически отображается из-за двусторонней привязки.
Любые идеи, как я могу представить скрытое поле, заполненное AngularJS?
источник
display: none;
? Это ужасно Angular игнорирует скрытые элементы.<input type="hidden" required ng-model="data.userid" ng-init="data.userid=pivot.id" />
. Это не может быть правильным способом, но это работает для меня.Ответы:
Вы не можете использовать двойную привязку со скрытым полем. Решение заключается в использовании скобок:
РЕДАКТИРОВАТЬ: см. Эту тему на GitHub: https://github.com/angular/angular.js/pull/2574
РЕДАКТИРОВАТЬ:
Начиная с версии Angular 1.2, вы можете использовать директиву ng-value, чтобы связать выражение с атрибутом value ввода. Эта директива должна использоваться с входным радио или флажком, но хорошо работает со скрытым вводом.
Вот решение, использующее значение ng:
Вот скрипка, использующая ng-значение со скрытым вводом: http://jsfiddle.net/6SD9N
источник
Вы всегда можете использовать a
type=text
иdisplay:none;
Angular игнорирует скрытые элементы. Как говорит OP, обычно вы бы этого не делали, но это похоже на особый случай.источник
В контроллере:
По мнению:
источник
entityId
еслиentityId
это массивЯ нашел хорошее решение, написанное Майком на sapiensworks . Это так же просто, как использовать директиву, которая отслеживает изменения в вашей модели:
а затем свяжите ваш ввод:
Но решение, предоставленное tymeJV, могло бы быть лучше, так как скрытый ввод не вызывает событие change в javascript, как рассказал yycorman в этом посте, поэтому при изменении значения через плагин jQuery все равно будет работать.
Изменить Я изменил директиву, чтобы применить новое значение обратно к модели, когда инициируется событие изменения, поэтому оно будет работать как текст ввода.
поэтому, когда вы запускаете
$("#yourInputHidden").trigger('change')
событие с помощью jQuery, оно также обновляет связанную модель.источник
Обнаружил странное поведение в отношении этого скрытого значения (), и мы не можем заставить его работать.
После игры мы обнаружили, что лучший способ - это просто определить значение в самом контроллере после области видимости.
источник
Я достиг этого через -
источник
обновить ответ @tymeJV, например:
источник
Я столкнулся с той же проблемой, мне действительно нужно отправить ключ из моего jsp в java-скрипт. На его решение уходит около 4 часов или больше моего дня.
Я включил этот тег в мой JavaScript / JSP:
Результат был: Portfólio 1 criado com sucesso! ID = 3.
Наилучшие пожелания
источник
На всякий случай, если кто-то все еще борется с этим, у меня возникла похожая проблема при попытке отслеживать сеанс пользователя / идентификатор пользователя в многостраничной форме.
Я исправил это, добавив
.when ("/ q2 /: uid" в маршрутизации:
И добавил это как скрытое поле для передачи параметров между страницами веб-формы
<< input type = "hidden" обязательный ng-model = "formData.userid" ng-init = "formData.userid = uid" />
Я новичок в Angular, так что не уверен, что это лучшее из возможных решений, но сейчас мне кажется, что оно работает нормально.
источник
Непосредственно назначьте значение модели в
data-ng-value
атрибуте. Так как интерпретатор Angular не распознает скрытые поля как часть ngModel.источник
Я использую классический JavaScript, чтобы установить значение для скрытого ввода
источник
Ниже код будет работать для этого IFF в том же порядке, что и упомянутый выше. Убедитесь, что вы указали тип, а затем имя, ng-модель, ng-init, значение. Это оно.
источник
Здесь я хотел бы поделиться своим рабочим кодом:
источник