2017-05-21 81 views
0

我有一个多选的选项数组必须以特定的JSON格式发送。然而,在Knockoutjs,我得到这个与选择:重新格式化knockoutjs JSON

"UserGroups":["Group1","Group2"]" 

但我需要它,而不是像这样

"UserGroups" : ["UserGroupName" : "Group1", "UserGroupName : "Group2"] 

这里是我的视图模型:

var viewModel = new UserModel([ 
{ id: ko.observable(""), 
firstName: ko.observable(""), 
lastName: ko.observable(""), 
UserGroupsListOptions: ["Group1", "Group2", "Group3"], 
UserGroups: ko.observable("") }]); 
ko.applyBindings(viewModel); 
+0

群组:[{“UserGroupName”:“组1”},{“UserGroupName:‘组2’}]。其应理解对象 – Bindrid

+0

的阵列如何然后将余更改为对象的数组? – rStackSharper

回答

0

我建议你从查找javascript对象({ })和数组([ ])之间的差异(和相似性)开始。

正如评论,你期望的格式是无效的JavaScript。您可能打算创建一个对象数组。

你需要一个函数,接受一个字符串并返回一个对象:

var makeGroup = function(groupName) { 
    return { 
    userGroupName: groupName 
    }; 
} 

由于您UserGroupName串已经在一个数组,你可以使用map,这是现成的阵列中的一种方法和可用于内容转换成一个新的数组:

var UserGroupsListOptions = 
    ["Group1", "Group2", "Group3"].map(makeGroup); 

附加说明:

  • 在JavaScript中,变量(不是构造函数)通常以小写字符开头。这也可以帮助指出哪些是服务器端数据,哪些是转换数据。
  • 您的viewmodel是由一个非常复杂的对象组成的数组...您可能想要创建另一个 viewmodel,它可以帮助您创建内部对象。