从外部JSON加载dat.gui设置?

时间:2014-06-20 15:58:12

标签: javascript json user-interface dat.gui

我有一个带有dat.gui界面的webapp,我希望人们能够彼此分享他们的设置。我知道您可以将预设保存到localStorage文件,或者将它们作为JSON对象直接保存在源中。 (http://workshop.chromeexperiments.com/examples/gui/#5--Saving-Values

我在旧版本的dat.gui中看到有一个saveURL()函数,我认为它在查询字符串中传递了设置。 (https://dat-gui.googlecode.com/git-history/v0.3.2/index.html

当前版本是否可以在页面加载时将任意JSON传递给gui,或者通过查询字符串指定JSON文件的链接?

1 个答案:

答案 0 :(得分:1)

我创建了一个示例(使用dat.gui版本0.5),该示例演示了在初始化dat.GUI对象时从JSON文件加载预设值:

http://codepen.io/BenSmith/pen/lxiqb

“重新水合”dat.GUI对象的代码的关键部分是:

var json = '{ \
  "preset": "Default",\
  "closed": false,\
  "remembered": {\
    "Default": {\
      "0": {\
        "message": "Value from JSON",\
        "speed": 5,\
        "displayOutline": true,\
        "color1": [\
          128,\
          128,\
          128\
        ]\
      }\
    }\
  },\
  "folders": {}\
}';

  var text = new datGUI();
  var gui = new dat.GUI({ load: JSON.parse(json) });

注意“message”值(例如)如何具有JSON中的值(即“来自JSON的值”),而不是默认dat.GUI对象中的值(即“dat.gui”)。< / p>

实际上,您将从文件中获取JSON,而不是对其进行硬编码。另请注意使用JSON.parse()将JSON字符串转换为JSON对象。