AngularJS Отключение форм при создании контроллеров

AngularJS отключает (не может отправлять) формы, у которых нет определенного набора действий:

<form action="">

при создании контроллера. У него нет этой проблемы при создании директивы или фабрики.

Вы можете увидеть это в планке здесь:

http://plnkr.co/edit/gWFRMKGO3FzZtOgs4VmW?p=preview

Форма определяется как:

<form action="" method="post">

Если вы удалите начало строки 6, вы сможете отправить форму.

Простое решение — определить действие, но я бы не стал этого делать, так как в этом нет необходимости.

ОБНОВЛЕНИЕ

Некоторые подробности о попытке получить это изменение в Angular можно найти здесь:

https://github.com/angular/angular.js/pull/3776


person Kohjah Breese    schedule 13.09.2014    source источник
comment
Я не понимаю вашего вопроса, пожалуйста, уточните, что вы подразумеваете под отключением?   -  person Rahil Wazir    schedule 13.09.2014
comment
Обновлено, я имел в виду, что вы не можете отправить форму.   -  person Kohjah Breese    schedule 13.09.2014
comment
У меня есть быстрый обходной путь :) не стесняйтесь проверить его! stackoverflow.com/questions/28773057/   -  person Ezeewei    schedule 27.02.2015


Ответы (1)


Вы можете использовать ng-submit, чтобы справиться с этим.

<form ng-submit="submitForm()" method="post">
  <input name="test" value="11111111" />
  <button type="submit" name="submit" value="1">Send</button>
  <input type="submit" name="submit2" value="Send2" />
</form>

Таким образом, форма будет отправлена ​​нормально, и вы должны фактически отправить данные в свою функцию submitForm (просто имя примера).

Вот краткий plnkr: http://plnkr.co/edit/lwWVG0CDHSGMtMU0B8Nj?p=preview

Обратите внимание, что вы можете отправить с помощью кнопок, а также нажав клавишу ввода в поле. Надеюсь, это то, о чем вы просили.

Спасибо

person Fedaykin    schedule 13.09.2014
comment
Спасибо, это работает, но мне интересно узнать, как вы можете заставить Angular просто не вмешиваться в форму? Я не сказал Angular что-либо делать с формой, но он решил, что все равно изменит ее. Это не кажется желательным. - person Kohjah Breese; 13.09.2014
comment
Если вы не хотите, чтобы ваша форма обрабатывалась angular, просто поместите ее за пределы вашего ng-app. Также я не думаю, что вы можете отправить форму без action, независимо от угла. - person Fedaykin; 13.09.2014
comment
Ну, это не очень angular-ish, я настоятельно рекомендую вам переосмыслить использование angular в этом случае. Вы всегда можете поделиться своими намерениями, я все еще не могу понять их на 100%. - person Fedaykin; 13.09.2014
comment
Я не использую Angular для каких-либо действий с формой. Это стандартная форма для отправки по HTTP, а не по AJAX. Просто ищу способ заставить Angular не мешать этому. - person Kohjah Breese; 13.09.2014
comment
В каком теге ваш ng-app? Самым простым способом было бы выложить из него форму. - person Fedaykin; 13.09.2014
comment
Да, это самое простое. Приложение ng находится в моем теге html. Я не могу переместить его, так как есть пара предметов, которые зависят от него. Кажется, лучший вариант — просто указать действие. Спасибо за ваше время. - person Kohjah Breese; 13.09.2014