对于特定的用例,我必须以“旧方式”提交一个表单。意思是,我使用带有 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 填充的隐藏字段吗?
您不能对隐藏字段使用双重绑定。解决方案是使用括号:
<input type="hidden" name="someData" value="{{data}}" /> {{data}}
编辑:请参阅 github 上的此线程:https ://github.com/angular/angular.js/pull/2574
编辑:
从 Angular 1.2 开始,您可以使用 ‘ng-value’ 指令将表达式绑定到输入的 value 属性。该指令应与输入单选或复选框一起使用,但适用于隐藏输入。
这是使用 ng-value 的解决方案:
<input type="hidden" name="someData" ng-value="data" />
这是使用带有隐藏输入的 ng-value 的小提琴:http: //jsfiddle.net/6SD9N