无法使Shiny模块与valueBox一起使用

时间:2017-09-19 15:27:41

标签: r shiny shinydashboard

我正在使用闪亮的模块和一些图表,一切正常(令人惊叹的功能!),...但我无法使它们与valueBox(来自shinydashboard)一起工作。什么都没有呈现...... 这是一个最小的例子:

library(shinydashboard)

# MODULE UI
bsc_tile_UI <- function(id) {
   ns <- NS(id)
   valueBoxOutput("tile1", width=12)
}

# MODULE Server
bsc_tile_OUT <- function(input, output, session, number, metric) {
  output$tile1 <- renderValueBox({
    valueBox(number, paste(metric), icon = icon("arrow-up"),color = "blue", 
    width=12)
  })
}

ui<-dashboardPage(
      dashboardHeader(title = "Dashboard"),
      sidebar <- dashboardSidebar(disable = TRUE),
      dashboardBody(
        fluidPage(
          bsc_tile_UI("tile_1"),
          bsc_tile_UI("tile_2")
          )
        )
      )

# App server
server <- function(input, output,session){  
  callModule(bsc_tile_OUT, "tile_1", '300', 'metric 1')
  callModule(bsc_tile_OUT, "tile_2", '500', 'metric 2')
}

shinyApp(ui, server)

在给定的示例中,参数&#34; number&#34;和&#34; metric&#34;是明确提供的,但我的目的是将它们定义为数据帧的变量。

欢迎任何帮助! (对不起,我的英文)

1 个答案:

答案 0 :(得分:1)

您需要在所有已定义的模块输入中使用ns()。模块服务器将获取输出向量的成员,并在内部将模块ID附加到它们(在您的情况下为“tile_1”和“tile_2”) - 这是您需要使用ns()在UI中手动执行的操作。因此,如果您只是将模块UI输出定义更改为以下内容,则代码将起作用:

valueBoxOutput(ns("tile1"), width=12)

enter image description here