对于特定的用例,我必须以“旧方式”提交单个表单。意思是,我使用带有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}}
编辑:
从Angular 1.2开始,您可以使用’ng-value’指令将表达式绑定到input的value属性。该指令应与输入单选框或复选框一起使用,但与隐藏的输入一起使用时效果很好。
这是使用ng-value的解决方案:
<input type="hidden" name="someData" ng-value="data" />