Post 过帐表单时,带ng选项的角度选择发送索引而不是值

Post 过帐表单时,带ng选项的角度选择发送索引而不是值,post,angularjs,html-select,Post,Angularjs,Html Select,当我发布带有角度选择的表单时,它会发送所选选项的数组索引,而不是其值。我需要发送字符串,因为服务器不知道这些索引。我怎样才能解决这个问题 发件人: 拯救 您可以从小提琴中的控制台输出中看到,发布的表单正在发送resource=0,但我想要resource='a'。(注意:在我的fiddle中,我正在序列化表单,但这只是为了查看它将发布什么。在我的应用程序中,我实际上是在发布到一个真正的端点。) 这与类似,但答案是“不要担心价值”。但是在我的例子中,我发布了一个表单,所以我关心它的价值。我一定

当我发布带有角度选择的表单时,它会发送所选选项的数组索引,而不是其值。我需要发送字符串,因为服务器不知道这些索引。我怎样才能解决这个问题

发件人:


拯救
您可以从小提琴中的控制台输出中看到,发布的表单正在发送
resource=0
,但我想要
resource='a'
。(注意:在我的fiddle中,我正在序列化表单,但这只是为了查看它将发布什么。在我的应用程序中,我实际上是在发布到一个真正的端点。)


这与类似,但答案是“不要担心价值”。但是在我的例子中,我发布了一个表单,所以我关心它的价值。我一定错过了一些非常基本的东西。谢谢

简单的答案是不要张贴表单。如果要
将数据发布到端点,请使用或


查看Mark Rajcok对文档的评论:

您不应该使用jquery序列化表单,因为您在$scope中拥有所有相关数据,而这正是您想要序列化的内容(使用$http或$resource发布的某些子集或对象)。如果您对您的方法死心塌地,请使用数据元素的真实名称创建一个隐藏输入:



我不建议这样做,但这正是您想要做的。

ng选项适用于阵列。如果要使用ng选项,请按如下方式创建数组

r = [{ "value": 1, "text": "a" }, { "value": 2, "text": "v" }];  

<select ng-option="obj.value as obj.text for obj in r">
r=[{“value”:1,“text”:“a”},{“value”:2,“text”:“v”}];
或者您可以在您的案例中使用ng repeat

<form method="post">
        <select name="resourceTemp" ng-model="selectedResource">
            <option ng-repeat="r in ['a','b']" value="{{r}}">{{r}}</option>
        </select>
        <input type="hidden" name="resource" value="{{selectedResource}}" >
        <button type="submit">Save</button>
</form>

{{r}}
拯救

如果您需要解决这个问题,并且使用AngularJS良好实践不适用,因为匆忙或需要大量更改,请尝试以下方法(对我有用):


{{r}}

为什么要使用jQuery对表单进行序列化?你用的是角度。。。因此,如果你做得正确,你的表单应该在
$scope
中得到很好的表示。序列化只是为了演示,我添加了一个更新来澄清。对于黑客答案和最佳实践也是+1(序列化只是为了测试)。我不得不使用
ng value=“selectResource”
而不是
value={{selectedResource}}
r = [{ "value": 1, "text": "a" }, { "value": 2, "text": "v" }];  

<select ng-option="obj.value as obj.text for obj in r">
<form method="post">
        <select name="resourceTemp" ng-model="selectedResource">
            <option ng-repeat="r in ['a','b']" value="{{r}}">{{r}}</option>
        </select>
        <input type="hidden" name="resource" value="{{selectedResource}}" >
        <button type="submit">Save</button>
</form>
<select id="resourceTemp" ng-model="selectedResource">
   <option ng-repeat="r in ['a','b']" value="{{r}}">
      {{r}}
   </option>
</select>

<input type="hidden" name="resourceTemp" ng-value="selectedResource">