我正在尝试将一些数据作为单个对象异步发送。一半数据来 self 的 KnockoutJS viewModel。另一半是我想添加的一些数据。
我的想法是将它们都转换为 JSON 对象,然后使用数组 .concat 将它们放在一起。但这不起作用。你知道为什么吗?
我已经尝试了一些解决方案。第一种方法从 JSON 字符串构建一个对象,然后使用 JSON.parse 将它们作为一个对象。第二个尝试完全避免使用字符串。无论哪种方式,在我得到我的对象后,我尝试将它们连接在一起,但没有任何运气。
带字符串
toAddString = '{"file": "thefile"}';
toAddObj = JSON.parse(toAddString);
koString = ko.toJSON(viewModel);
koObj = JSON.parse(koString,null,2);
finalObj = koObj.concat(toAddObj);
与对象
toAddObj = [{"file": "thefile"}];
koObj = ko.toJS(viewModel);
finalObj = koObj.concat(toAddObj);
与对象(2)
toAddObj = new Object();
toAddObj.file = "one";
koObj = ko.toJS(viewModel);
finalObj = koObj.concat(toAddObj);
你知道这里可能出了什么问题吗?
我只需要一个对象,无论是数组还是 JSON 对象,都包含来自每个来源的数据。
最佳答案
尝试以下操作。我在猜测语法,因为我自己不使用 Knockout,我使用的是 ko.utils.extend()
将一个对象的属性复制到另一个对象的函数。
var toAddObj = { file: 'one' };
var koObj = ko.toJS(viewModel);
var finalObj = ko.utils.extend(toAddObj, koObj);
请注意,如果不使用 var
,您总是在创建全局变量(通常是个坏主意)。
关于javascript - 将 Knockout JS 对象与 Javascript 对象合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13963203/