当我发布带有 Angular 选择的表单时,它会发送所选选项的数组索引,而不是其值。我需要发送字符串,因为服务器不知道这些索引。我怎样才能解决这个问题?
来自 jsfiddle.net/2SuZG :
<form method="post" action="/my/post/endpoint">
<select name="resource" ng-options="r for r in ['a', 'b']"
ng-model="selectedResource"></select>
<button type="submit">Save</button>
</form>
您可以从 fiddle 中的控制台输出中看到发布的表单正在发送
resource=0
,但我想要 resource='a'
. (注意:在我的 fiddle 中,我正在序列化表单,但这只是为了看看它会发布什么。在我的应用程序中,我实际上是发布到一个真正的端点。)这类似于 this question ,但答案是“不要担心值(value)”。但就我而言,我发布了一个表格,所以我关心它的值(value)。我一定在这里遗漏了一些非常基本的东西。谢谢!
最佳答案
您不应该使用 jquery 序列化您的表单,因为您在 $scope 中拥有所有相关数据,这就是您想要序列化的内容(您将使用 $http 或 $resource 发布的某些子集或某些对象) .如果您对自己的方法不满意,请使用数据元素的真实名称创建一个隐藏输入:http://jsfiddle.net/2SuZG/1/
<select name="resourceTemp" ng-options="r for r in ['a', 'b']"
ng-model="selectedResource"></select>
<input type="hidden" name="resource" value="{{selectedResource}}" >
我不会推荐这个,但这是你想要做的。
关于post - 带有 ng-option 的 Angular 选择在发布表单时发送索引而不是值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16762664/