首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从模块内部在闪亮的标签面板之间切换?

如何从模块内部在闪亮的标签面板之间切换?
EN

Stack Overflow用户
提问于 2020-06-01 15:07:06
回答 1查看 896关注 0票数 3

我正在尝试模块化一个闪亮的应用程序,该应用程序有一个按钮,可以在tabPanels之间使用updateTabsetPanel()进行反应性切换。这在非模块化的应用程序中有效,但当将反应性包含在模块中时就不起作用了。我认为这与面板超出了模块的范围有关。下面是一些很小的例子(非模块化的版本起作用,而模块化的版本不起作用)。有办法让模块与tabPanels对话吗?

代码语言:javascript
复制
# Non-modular version
library(shiny)
library(shinydashboard)

ui <- fluidPage(
  fluidRow(
    column(
      width = 12,
      tabBox(
        id = "tabset2",
        type = "tabs",
        selected = "1",
        tabPanel("T1", value = "1", 
                 fluidRow(
                   box(width = 9, "Some content here"),
                   box(width = 3, 
                       actionButton("switchbutton", "Click to swtich")
                   )
                 )
        ),
        tabPanel("T2", value = "2", 
                 fluidRow(
                   box(width = 9, "Some different content here")
                 )
        )
      )
    )
  )
)

server <-  function(input, output, session) {
  observeEvent(input$switchbutton, {
    updateTabsetPanel(session = session,
                      inputId = "tabset2",
                      selected = "2")
  })
}

shinyApp(ui, server)

# Modular version
library(shiny)
library(shinydashboard)

switcherButton <- function(id) {
  ns <- NS(id)
  fluidRow(
    column(
      width = 12,
      tabBox(
        id = "tabset2",
        type = "tabs",
        selected = "1",
        tabPanel("T1", value = "1", 
                 fluidRow(
                   box(width = 9, "Some content here"),
                   box(width = 3, 
                       actionButton(ns("switchbutton"), "Click to switch")
                   )
                 )
        ),
        tabPanel("T2", value = "2", 
                 fluidRow(
                   box(width = 9, "Some different content here")
                 )
        )
      )
    )
  )
}

switcher <- function(input, output, session, parent) {
  observeEvent(input$switchbutton, {
    updateTabsetPanel(session = session,
                      inputId = "tabset2",
                      selected = "2")
  })
}

ui <- fluidPage(
  switcherButton("switcher1")
)

server <-  function(input, output, session) {

  callModule(switcher, "switcher1")

}

shinyApp(ui, server)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-01 15:24:05

您忘了将tabBox id包装在ns()中。只需将"tabset2"替换为ns("tabset2")

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62135166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档