AngularJS不发送隐藏的字段值

对于一个特定的用例,我必须提交一个单一的表单“旧的方式”。 意思是,我使用了一个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'指令将表达式绑定到输入的值属性。 该指令应该与输入收音机或复选框一起使用,但可以很好地处理隐藏的输入。

这里是使用ng-value的解决方案:

<input type="hidden" name="someData" ng-value="data" />

这是一个使用隐藏输入的ng值的小提琴:http://jsfiddle.net/6SD9N


您始终可以使用type=textdisplay:none; 因为Angular忽略隐藏的元素。 正如OP所说,通常你不会这样做,但这似乎是一个特例。

<input type="text" name="someData" ng-model="data" style="display: none;"/>

在控制器中:

$scope.entityId = $routeParams.entityId;

在该视图中:

<input type="hidden" name="entityId" ng-model="entity.entityId" ng-init="entity.entityId = entityId" />
链接地址: http://www.djcxy.com/p/74367.html

上一篇: AngularJS does not send hidden field value

下一篇: PHP file upload can't send POST data on same form