jam*_*ase 5 javascript json knockout.js
我试图异步发送一些数据作为单个对象.一半的数据来自我的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);
Run Code Online (Sandbox Code Playgroud)
toAddObj = [{"file": "thefile"}];
koObj = ko.toJS(viewModel);
finalObj = koObj.concat(toAddObj);
Run Code Online (Sandbox Code Playgroud)
toAddObj = new Object();
toAddObj.file = "one";
koObj = ko.toJS(viewModel);
finalObj = koObj.concat(toAddObj);
Run Code Online (Sandbox Code Playgroud)
你知道这里可能出了什么问题吗?
我想要的只是一个对象,无论是数组还是JSON对象,它包含来自每个源的数据.
请尝试以下方法.我在猜测语法,因为我自己不使用Knockout,而且我正在使用该ko.utils.extend()函数将一个对象的属性复制到另一个对象上.
var toAddObj = { file: 'one' };
var koObj = ko.toJS(viewModel);
var finalObj = ko.utils.extend(toAddObj, koObj);
Run Code Online (Sandbox Code Playgroud)
请注意,不使用var您总是创建全局变量(通常是一个坏主意).