2

这是 dat.gui 界面中的下拉列表。单击任何数字后, jumpSwitcher 将是您选择的任何数字。我正在尝试根据用户选择的内容替换与其特定编号相关的每个列表Starsystem

在此处输入图像描述

solPlanets= ['Ilos', 'Tuchanka', 'Illium', 'Palaven']当您单击 2 时,列表 2 中显示的内容也是如此。默认情况下,solPlanets 显示 ['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune' ] 因为默认是 jumpSwitcher = 1。

solPlanets= ['Mercury', 'Venus', 'Earth', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune']问题是,无论 jumpSwitcher 是否为 2 ,列表将始终显示为。

如果 jumpSwitcher 为 2,我通过放置一条警报消息确认了这一点,并且警报弹出,但列表不会改变。这可能与 dat.gui 不更新的类似问题有关。我已经尝试过 listen() 方法,因为它是主要给出的答案,但它对我不起作用。

我已经弄好了。

PS:我以前问过这个问题,但现在我意识到这可能与 dat.gui 不刷新值而不是 javascript 有关。所以我删除了这个问题,因为它接触到了错误的受众,而且我没有为它做任何事。

4

1 回答 1

2

您必须为行星列表重新创建控制器。

我在这里修改了您的 jsfiddle 示例。里面的主要内容

function updatePlanets(id) {
    var controller = gui.__controllers[2];
    controller.remove();
    gui.add(data, 'Planets', planets[id]).onChange(doSomeStuff);

    //back to 0 element
    data.Planets = 0;
    gui.__controllers[2].updateDisplay();
}

此外,当我将 DAT.GUI 的版本更改为 0.6.1 时,它开始工作

于 2016-10-31T18:20:22.293 回答