循环创建时的数据问题

Issue with data when created by loop

我正在使用 plugin 在元素上创建输入和输出。

正常输出选项配置如下:

outputs: {
    output_0: {
     label: '0',
     id: 'site0_0',
    },
    output_1: {
     label: '1',
     id: 'site1_1',
    },
    output_2: {
     label: '2',
     id: 'site2_2',
    },
}

如上在我的脚本中静态写入时,它工作正常。

我现在正在尝试使用循环动态创建此列表:

$(site).each(function(i, option) {
    sites += "output_" + option + ": { label: '" + option + "', id: 'site" + option + "_" + id + "',},"
})

这会产生与上面静态设置版本相同的数据:(尽管布局不那么整洁)

output_0: {
 label: '0',
 id: 'site0_0',
},
output_1: {
 label: '1',
 id: 'site1_1',
},
output_2: {
 label: '2',
 id: 'site2_2',
},

但是当我尝试按如下方式添加它时,出现了很多错误:

outputs: {
    sites
}

jquery.flowchart.js?1565088567:545 Uncaught TypeError: Cannot read property 'replace' of undefined
    at e.<computed>.<computed>._createSubConnector (jquery.flowchart.js?1565088567:545)
    at e.<computed>.<computed>._createSubConnector (jquery-ui.min.js?1565088567:6)
    at addConnector (jquery.flowchart.js?1565088567:516)
    at e.<computed>.<computed>._getOperatorFullElement (jquery.flowchart.js?1565088567:527)
    at e.<computed>.<computed>._getOperatorFullElement (jquery-ui.min.js?1565088567:6)
    at e.<computed>.<computed>.createOperator (jquery.flowchart.js?1565088567:583)
    at e.<computed>.<computed>.createOperator (jquery-ui.min.js?1565088567:6)
    at HTMLDivElement.<anonymous> (jquery-ui.min.js?1565088567:6)
    at Function.each (jquery-1.12.2.min.js?1565088567:2)
    at n.fn.init.each (jquery-1.12.2.min.js?1565088567:2)

第545行显示:

    $operator_connector_label.html(connectorInfos.label.replace('(:i)', subConnector + 1));

是否可以在循环中创建此数据,如果可以的话如何?

谢谢

您不能按照您尝试的方式将对象 属性 作为字符串值提供给父对象。

要解决此问题,请在循环中创建子对象,如下所示:

var obj = {};

$(site).each(function(i, option) {
  obj['output_' + option] = {
    label: option,
    id: 'site' + option + '_' + id
  }
});

// in settings of the plugin:
outputs: obj

我还建议不要从 sites 创建 jQuery 对象,如果它不是元素或元素对象数组的话。从上下文来看,它似乎只是一个普通的字符串数组,因此基本的 for()forEach() 会更合适。