我正在尝试从给定的字符串创建对象。字符串值应该是新对象的名称。我创建了一个根对象,并通过给出一个字符串名称并从根对象克隆来创建后续对象。
我正在使用jointJs。
这是根对象
var lvl0 = new joint.shapes.basic.Rect({
position: { x: 100, y: 30 },
size: { width: 100, height: 30 },
attrs: { rect: { fill: '#31d0c6', stroke: 'none', filter: { name: 'dropShadow', args: { dx: 3, dy: 6, blur: 3, color: '#333333' }} },
text: { text: 'lvl0', fill: '#ffffff' },
style: { 'text-shadow': '1px 0 1px #333333' } }
});
然后是克隆根对象并将给定名称分配给新对象的函数。
function add_cell(parent, child, lvl, color) {
if (lvl === 0)
{ var child = parent.clone().translate(0, 0).attr('text/text', child); }
else { var child = parent.clone().translate(200, 0).attr('text/text', child).attr('rect/fill', color); }
graph.addCell(child);
if (lvl != 0) { createLink(parent, child).set(createLabel('0,N 1,1')); }
}
这是主叫代码。
var lst = [ { "parent": "lvl0", "child": "dept", "lvl": 0, "color": "green" }, { "parent": "dept", "child": "empl", "lvl": 1, "color": "yellow" } ];
for (var i = 0; i < lst.length; i++) {
add_cell (window[lst[i].parent], lst[i].child, lst[i].lvl, lst[i].color);
}
第一个克隆成功,因为克隆的对象 lvl0 是现有对象。但是第二个克隆将失败,因为对象 dept 不存在。而是将子变量覆盖到克隆对象。我基本上需要将克隆对象从子重命名为 dept 。我怎么能这样做?
谢谢,