【发布时间】:2014-11-07 20:39:08
【问题描述】:
我有一个描述我的文档的对象。每个文档都包含层,这些层在数组中的对象中进行了描述
var example = {
id: 'some_id',
layers: [{
id: 'some_layer_id',
width: 100,
height: 200
}]
};
有不同类型的图层,每个都有它的模板:
var layer_templates = [{
type: 'text',
width: 100,
height: 100,
style: 'common'
}];
我在 jQuery 事件中创建新图层:
jQuery('#button').on('click', function () {
var ldata = layer_templates[0]; // get a template
ldata['id'] = 's-l-' + Math.random().toString(); // create an id
example['layers'].push(ldata); // add new "layer" to document
console.log(example['layers']); // check
});
每次我将新的ldata 层添加到example['layers'] 数组时,它只保留带有id: 'some_layer_id' 的初始对象,并用最后一个对象重写所有新创建的对象。
请查看 jsFiddle:Problem in action
【问题讨论】:
-
这是一个控制台问题并设置了相同的 id。登录
console.log(ldata.id);或JSON.stringify(ldata); -
同样的事情发生在 IE 中。主要问题是我尝试更新一个更大的数组,它用相同 ids 的对象更新它((
-
所有的控制台都这样做...你只记录了 id 吗?会被骗吗?
-
不,只是 id 不会欺骗
标签: javascript jquery arrays associative-array