我的目标是将tabsetPanel包裹在conditionalPanel中,其条件是全局变量为false。
用户界面
mainPanel(
conditionalPanel("searchPage == \"false\"",
tabsetPanel(
tabPanel("Summary",htmlOutput("summary")),
tabPanel("Description", htmlOutput("description"))
))),
Run Code Online (Sandbox Code Playgroud)
全球
searchPage <- "true"
Run Code Online (Sandbox Code Playgroud)
然后在server.RI中为它分配新的值几次,但是都像这样:
observeEvent(input$openButton,
output$results <- renderUI({
textOutput("")
searchPage <- "false"
}))
Run Code Online (Sandbox Code Playgroud)
无论我做什么,我总是得到“ Uncaught ReferenceError:未定义searchPage”。我尝试将global.R更改为使用引号而不是使用引号,使用<-或<<-的多种不同组合,使其成为this.searchPage,my.searchPage和许多其他东西(当然总是使server.R和ui.R匹配),但运气还不足。
由于关于该问题的信息的评论中提到的,这是对于一个完美的用例/ / 功能。每当您需要有条件地显示条件不是输入的简单javascript表达式的内容时,都可以使用这些函数代替。shinyjs toggle()show()hide()conditionalPanel()
为了使用这些功能,您需要某种方式来指定要隐藏/显示的元素(在本例中为mainPanel())。简便的方法是将整个面板包装在带有ID的div中。因此,像mainPanel(div(id = "mainpanel", ...))voila 这样定义面板,面板上有一个ID,现在您可以调用shinyjs::show("mainpanel")或随时hide()在服务器代码中进行调用。