使用闪亮的模块和shinydashboard:shiny.tag错误 [英] Using shiny modules and shinydashboard: shiny.tag error

查看:0
本文介绍了使用闪亮的模块和shinydashboard:shiny.tag错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正尝试在shinydashboard应用程序中创建和使用闪亮的模块,但我一直收到此错误:

Error in FUN(X[[i]], ...) : Expected an object with class 'shiny.tag'.

以下是尽可能精简的应用程序:

ui.r

library(shiny)
library(shinydashboard)

source("modules.r")

ui <- dashboardPage(
 dashboardHeader(
  title = "Shiny modules and shinydashboard"
 ),

 dashboardSidebar(
  sidebarMenu(
   menuItem("PointA") 
  )
 ),

 dashboardBody(
  tabItems(
   fooUI("myid") 
  )
 )
)

服务器。r

server <- function(input, output) {
 callModule(foo, "myid") 
}

模块。r

fooUI <- function(id) {
 ns <- NS(id)

 tagList(
  tabItem(
   tabName = "PointA",
   textOutput(ns("text"))
  )
 )
}

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

 output$text <- renderText(
  rnorm(1)
 )
}

我做错了什么?我让其他类型的模块在一个"普通"闪亮的应用程序中工作,然而,每当我尝试使用shinydashboard中的模块时,它都失败了。

我使用的是Rshinyshinydashboard的最新版本。这不是这里的问题。

推荐答案

shinydashboardtagList

如上所述here

您需要简单易用

   ui <- dashboardPage(
  dashboardHeader(
    title = "Shiny modules and shinydashboard"
  ),

  dashboardSidebar(
    sidebarMenu(
      menuItem("PointA",tabName = "PointA") 
    )
  ),

  dashboardBody(
    tags$div( fooUI("myid"), class = "tab-content" )

)
)

更新

您还需要menuItem中的tabName

menuItem("PointA_",tabName = "PointA") 

说明

如您所见

tabItems
function (...) 
{
    lapply(list(...), tagAssert, class = "tab-pane")
    div(class = "tab-content", ...)
}
<environment: namespace:shinydashboard>

使用listto...,如果您已将列表作为参数,则无法工作。

因此其他变体会创建新表项函数,如下所示
tabItems1=function (...) 
    {
        lapply(..., tagAssert, class = "tab-pane")
        div(class = "tab-content", ...)
    }
environment(tabItems1)=environment(tabItems)

然后您可以将tabItems1tagList

一起使用

这篇关于使用闪亮的模块和shinydashboard:shiny.tag错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆