我有这个JS,我在Ajax上有$(document).ready(function() {
editor = new $.fn.dataTable.Editor( {
table: "#user_groups_table",
template: '#user_groups_form',
display: "details",
idSrc: "id",
ajax: {
create: {
type: 'POST',
url: '/strongbolt/user_groups',
}
},
fields: [ {
name: "name"
}, {
name: "description"
}, {
type: "checkbox",
name: "users[].id",
optionsPair: {
label: 'name',
value: 'id'
}
}, {
type: "checkbox",
name: "roles[].id",
optionsPair: {
label: 'name',
value: 'id'
}
}
]
} );
editor.on( 'preSubmit', function ( e, data, action ) {
if ( action === 'create' ) {
data.strongbolt_user_group = {
"name": data.data[0].name,
"description": data.data[0].description,
"user_ids": data.data[0].users,
"role_ids": data.data[0].roles
};
delete data.data;
}
} );
个动作:
editor.on( 'preSubmit', function ( e, data, action ) {
以data
开头的最后一部分在传递给服务器之前基本上修改了{
"strongbolt_user_group"=>{
"name"=>"Some test group",
"description"=>"Some test description",
"user_ids"=>{"0"=>{"id"=>"3"}, "1"=>{"id"=>"2"}, "2"=>{"id"=>"5"}},
"role_ids"=>{"0"=>{"id"=>"1"}, "1"=>{"id"=>"2"}}
}
}
。
此刻我在终端上找到了这样的参数:
{
"strongbolt_user_group"=>{
"name"=>"Some test group",
"description"=>"Some test description",
"user_ids"=>["3", "2", "5"],
"role_ids"=>["1", "2"]
}
}
然而我需要它像这样:
user_ids
基本上我需要role_ids
和 (function () {
'use strict';
angular
.module('timeOff')
.controller('TimeOffController', TimeOffController);
TimeOffController.$inject = ['$scope'];
function TimeOffController($scope) {
作为数组。
我如何在我的JS中修改它?谢谢!
答案 0 :(得分:1)
您必须将对象的数组(或类数组对象)映射到其ID数组:
"user_ids": Array.prototype.map.call(data.data[0].users, function(o) { return o.id; }),
如果您确定data.data[0].users
是一个数组,那么只需使用不map
的{{1}}:
call
在ES 6的箭头功能中甚至更短:
"user_ids": data.data[0].users.map(function(o) { return o.id; }),
注意:同样适用于"user_ids": data.data[0].users.map(o => o.id),
。