javascript - 将 Knockout JS 对象与 Javascript 对象合并

标签 javascript json knockout.js

我正在尝试将一些数据作为单个对象异步发送。一半数据来 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/

相关文章:

javascript - 如何弄清楚javascript如何动态改变网页?

javascript - 在 JavaScript 中将来自服务器的数据从一个页面传递到另一个页面,而不使用表单

java - 获取:" when converting Json object to XML in Java

json - 有没有办法在 ColdFusion 中转义井号字符 (#)?

jquery - Knockout.js 与 jquery ui datepicker 可以在除 IE 之外的任何地方工作

javascript - 以偏移量显示的 OpenLayers 矢量图层

javascript - 将 chart.js 与单个 javascript 文件集成

java - 如何使用 Selenium 放心调用体内函数

javascript - KnockoutJS - 在父标记中绑定(bind)子组件的点击事件

javascript - KnockoutJS 与 jQuery Datatables 和绑定(bind)插件,行单击传递整个数组而不是单个模型