Angular.js以旧方式提交

Dfr*_*Dfr 29 html forms angularjs

我正在将一个旧的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>
Run Code Online (Sandbox Code Playgroud)

我清除了所有jQuery代码并使用Angular重新开始.

UPD:

我想我现在找到了原因,它的action属性是空的,似乎空行动不受标准欢迎,但使用起来非常方便,允许你将表单提交到当前页面的URL,是否有Angular方式来做呢?

Tim*_*ers 18

关闭文档:http://docs.angularjs.org/api/ng.directive:form

Angular的理念是最小化数据和页面重新加载,因此他们不喜欢"旧学校表单",但您可以通过使用action表单中的属性来解决它.

Angular的设计考虑了单页应用程序,并避免了整页重新加载,因为这需要更长的时间.通过使用该ngSubmit指令,您可以定义一个函数,通过表单数据发送到服务器,并获得比完整页面重新加载更快的响应.字节而不是千字节.

  • 答案也会回答他的问题.我一直试图弄清楚如何通过动作属性向你所在的页面提交,当网址被哈希时,因为它是重置密码的网址,例如.拉出一些头发后最终工作的是`action ="#"` (7认同)

mar*_*sen 11

  • 使用非空action属性使Angular提交表单
  • action使用当前位置填充属性(使用角度)

在你的控制器中:

$scope.location = $window.location.href
Run Code Online (Sandbox Code Playgroud)

在您的HTML中:

<form action="{{location}}">
Run Code Online (Sandbox Code Playgroud)

请参阅plunkr演示.

  • 这是对原始问题的更好答案. (3认同)