dat.GUI和复杂变量

时间:2018-04-25 15:04:35

标签: javascript dat.gui

我对dat.GUI相当新,我在使用更复杂的变量时遇到了问题。

我有以下内容:

let complexVariable= {
    topLayer:
        {
            deeperLayer:
                {
                    deepestLayer: 20,
                    //Other stuff                    
                }
        }
}

let gui = new dat.GUI();
gui.add(complexVariable, "topLayer.deeperLayer.deepestLayer", 10, 40);

这给了我以下错误:

Uncaught Error: Object "[object Object]" has no property "topLayer.deeperLayer.deepestLayer"

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

通过查看source code,目前似乎无法实现。它们使用括号表示法和您在对象上传递的单个属性。

function add(gui, object, property, params) {
  if (object[property] === undefined) {
    throw new Error(`Object "${object}" has no property "${property}"`);
  }
...

所以你要告诉dat.GUI要做的是找到一个顶级属性“topLayer.deeperLayer.deepestLayer”,你的对象显然不存在。似乎必须编写更多代码来支持嵌套属性。

dat.gui必须执行类似if (object[property1][property2][...] === undefined)的操作或在您的情况下执行complexVariable["topLayer"]["deeperLayer"]["deepestLayer"];