【问题标题】:show(), hide() usage from shinyjs, Shiny来自shinyjs,Shiny的show(),hide()用法
【发布时间】:2016-06-25 13:21:26
【问题描述】:

我有一个我开发的闪亮应用程序的简化版本。我想要的是能够在按下 Frame1 动作按钮时显示 dataframe1 并隐藏 dataframe2 并在按下 Frame2 动作按钮时再次显示 dataframe2 并隐藏 dataframe1。我显然需要在同一位置打印表格。感谢您的帮助和您的时间。

服务器.R

shinyServer(function(input, output, session) {

  data_for_use <- reactiveValues(d=NULL)

  observeEvent(input$actForFrame1,{
  data_for_use$dataFrame1 <- data.frame(firstColumn= c(1,3,5),secondColumn=c(2,4,6))})

  observeEvent(input$actForFrame2,{
  data_for_use$dataFrame2 <- data.frame(firstColumn= c(10,30,50),secondColumn=c(20,40,60))})

  output$dataFrame1 <- DT::renderDataTable({
    DT::datatable(data_for_use$dataFrame1)
  })

  output$dataFrame2 <- DT::renderDataTable({
    DT::datatable(data_for_use$dataFrame2)
  })

  observeEvent(input$actForFrame1,{
    show("dataFrame1")
    hide("dataFrame2")

  })

  observeEvent(input$actForFrame2,{
    show("dataFrame2")
    hide("dataFrame1")

  }) 
})

ui.R

library(shinyjs)
library(shiny)
library(DT)

shinyUI(pageWithSidebar(

  headerPanel("Test"),

  sidebarPanel(

    actionButton("actForFrame1", "Frame1"),
    actionButton("actForFrame2", "Frame2")
  ),

  mainPanel(
    useShinyjs(),
    wellPanel("Test",
              conditionalPanel(condition = "input.actForFrame1",
              DT::dataTableOutput("dataFrame1")
              ),
              conditionalPanel(condition= "input.actForFrame2",
              DT::dataTableOutput("dataFrame2"))
              )
  )
)
)

【问题讨论】:

  • 对我来说很好。您是否尝试过清除会话并确保没有加载其他包? shinyjs 显示/隐藏仍然可以正常工作
  • 我尝试重新启动 R studio,上面发布的示例运行良好。然后我尝试运行我开发的实际闪亮的应用程序。它不起作用,然后也无法正确运行上面的示例。似乎我的实际应用程序正在做一些使显示/隐藏损坏的事情(我不确定有问题的部分是否是显示隐藏,但我认为是这样)我在实际应用程序中使用的其他包是 DT、ggplot2、affy、GEOquery、shinyjs闪亮的图书馆本身。有什么可以推测的吗?
  • 没有定义全局变量,只是反应值..
  • 我唯一的猜测是其他一些包定义了showhide 函数。也许尝试致电shinyjs::show()shinyjs::hide()。如果不是,那我不知道,你必须进一步调试它
  • 订单library(shinyjs) 是否被称为物质-DTshiny 是否屏蔽show/hide

标签: r shiny hide show shinyjs


【解决方案1】:

事实证明,正如@Dean Attali 善意地指出的那样,这些函数与其他一些包使用相同的命名空间,这反过来又使它们无法执行其功能。

使用shinyjs::show(); shinyjs::hide() 解决了这个问题。

【讨论】:

    猜你喜欢
    • 2020-11-05
    • 2021-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 2014-03-27
    • 2019-07-01
    相关资源
    最近更新 更多