【问题标题】:Print JavaScript condition used in Shiny conditionalPanel打印 Shiny conditionalPanel 中使用的 JavaScript 条件
【发布时间】:2017-11-14 17:04:11
【问题描述】:

我正在 Shiny 应用程序中创建条件面板。我正在尝试调试 JavaScript 条件,但没有检查它,我只是在猜测随机的 JavaScript 位。有没有办法直接检查条件?

selectizeInput('groups','Groups:',
                   choices = list('Choice1' = 'choice1','Choice2' = 'choice2'),
                   multiple = TRUE,selected = NULL
)

conditionalPanel(
          print("input.groups.indexOf('choice2') >= 0"), # desired output
          condition = "input.groups.indexOf('choice2') >= 0",
          selectInput("statusfilter", "StatusFilter",
                      list("NewChoice1" = "nc1","NewChoice2" = "nc2"))
)

上面的代码(从我的生产代码中概括出来)在我什至点击一个选项之前就在启动时显示了 conditionalPanel。一旦我这样做,它就会消失,直到我选择'choice2'。如果我可以检查情况,我可以很快解决这个问题。

【问题讨论】:

    标签: javascript r shiny


    【解决方案1】:

    在注释了我们的 print 语句以便代码运行之后,如果你打开你的 javascript 控制台,你会看到一个错误:

    Error parsing expression: input.groups.indexOf('choice2') >= 0

    这表明您的 JS 代码中断。这是因为 input.groups 为 null ,对 null 值执行 .indexOf 会导致错误。

    所以你想要的条件是:

    condition = "input.groups !== null && input.groups.indexOf('choice2') >= 0"

    【讨论】:

    • 有道理!我试图使问题更多地与一般调试选项有关,这可能我失败了。我看到很多类似的问题,如果他们知道在哪里寻找自己,就不会被问到。如果您可以编辑您的答案以强调您使用 JS 控制台进行调试,我认为它会更好地回答一般问题。不过,您回答了具体问题真的很有帮助!
    • 好吧,我并没有真正进行任何调试,我只是作为默认的第一步打开了控制台并看到了错误。由于试图对空值做某事而导致代码中出现看似无辜的错误(在 javascript 和 R 中),所以我认为是这种情况,检查过,是的。
    猜你喜欢
    • 2016-02-03
    • 2019-09-20
    • 1970-01-01
    • 2014-04-13
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 2018-03-09
    • 1970-01-01
    相关资源
    最近更新 更多