javascript - AngularJS Select Multiple - 如何提交 id 而不是整个对象

标签 javascript angularjs

我有如下多选:

<select 
    class="form-control" 
    ng-model="formData.selected_tests" 
    multiple="true"
    ng-multiple="true"
    ng-options="c.test for c in tests"
    id="tests"
    ng-attr-size="<% tests.length %>">
</select>

test 对象包含idtestlength 属性。

$scope.submit = function() {
    console.log($scope.formData);

    $http.post('/api/v2/test', $scope.formData)
      .success(function(data) { })
  .error(function(data){ })
}

当我提交表单时,我希望 formData.selected_tests 只包含所选 id 属性的数组。我不想提交整个 test 对象。

最佳答案

您可以使用 select as label for value in array 语法,在您的情况下为:

<select
    ...
    ng-options="c.id as c.test for c in tests"
>

这会将 id 放在 formData.selected_tests 而不是整个对象中。如果您在某个地方需要整个对象,那么您将不得不转换发送的数据,例如有一个功能:

$http.post('/api/v2/test', transform($scope.formData))

transform() 将创建一个新对象,如 formData,但会用它们的 id 替换测试。使用 angular.copy() 可能会很方便。

关于javascript - AngularJS Select Multiple - 如何提交 id 而不是整个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23390462/

相关文章:

javascript - 使用 ng-repeat 和过滤器时数组中对象的 $index

javascript - 在显示页面之前完成所有组件的加载 - React JS

javascript - 通过拖动移动动态创建的 DIV

javascript - 从网页检测我自己的 Firefox 扩展

javascript - 如何比较 JavaScript 表格中的单元格并测试是否相等? indexOf 是如何工作的?

javascript - 如何使用 SSL 将 haproxy 放在 socket.io 前面?获取混合内容警告

angularjs - 当用户在不相关的输入字段上按下 Enter 键时,Angular Bootstrap 日期选择器打开

javascript - 如果用户想要更改答案,则删除创建的 2 个 DIV 之间的当前行

javascript - 在 Angular 中广播站点范围的错误消息

javascript - 使用 javascript 或 angularfire 将两个 $firebaseArrays 组合成单个对象