Angular.js submit form старый способ
Я переношу старую html-страницу из jQuery в Angular, и она содержит некоторые формы старой школы с <input type="submit">
. Когда я обогатил свои страницы директивой ng-app
, старые формы перестали работать (я имею в виду, когда вы нажимаете кнопки submit
, ничего не происходит).
Я искал эту проблему и просматривал документы Angular, но, похоже, никто больше не отправляет формы.
Любые предложения о том, как привести эти формы к жизни снова без особых нажатий клавиш, будут оценены.
В настоящее время форма имеет следующую разметку:
<form name="form_upload" method="post" action="" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" name="send" value="Upload">
</form>
Весь код jQuery, который я очистил и начинаю с Angular.
UPD:
Я думаю, теперь я нашел причину, это пустой атрибут action
, кажется, что пустое действие не приветствуется стандартами, но очень удобно использовать, позволяя вам отправить форму на текущий URL страницы, есть ли Angular способ сделать это?
Ответы
Ответ 1
Отключение документов: http://docs.angularjs.org/api/ng.directive:form
Angular философия состоит в том, чтобы свести к минимуму данные и перезагрузки страниц, поэтому им не нравятся "старые школьные формы", но вы можете обойти ее, используя атрибут action
в форме.
Angular разработан с использованием одностраничных приложений и не позволяет полностью перезагрузить страницу, так как это займет больше времени. Используя директиву ngSubmit
, вы можете определить функцию для отправки данных формы на сервер и получить ответ назад намного быстрее, чем полная перезагрузка страницы. Байты вместо Килобита.
Ответ 2
- Используйте непустой атрибут
action
, чтобы сделать Angular отправьте форму
- Заполнить атрибут
action
текущим местоположением (используя angular)
В вашем контроллере:
$scope.location = $window.location.href
В вашем HTML:
<form action="{{location}}">
Смотрите демонстрацию plunkr.
Ответ 3
Я сделал это. Я уверен, что я использовал jquery для отправки формы, но вы могли бы сделать это с помощью простого старого javascript.
Один из комментариев на странице формы angular предлагает следующее:
<input onclick="javascript:$(this).parent().submit();" type="submit" value="">
http://docs.angularjs.org/api/ng.directive:form