【发布时间】:2017-09-18 02:38:19
【问题描述】:
我找不到在嵌套 UI 模块中使用 renderText 中的输出变量的方法。
当我试图获取选项卡的名称并将其放在我的 navbarPage 布局的标题标题中时,问题就出现了。
在解释如何通过session$ns like this one 处理renderUI(xxInput()) 的答案中,我找不到解决我的问题的方法。由于renderText 没有id 参数,我不知道这是否仍然适用。
小例子:
library(shiny)
header_module <- function(id, label="My Header") {
ns <- NS(id)
headerPanel(
div(
h2("Some text", shiny::br()),
#h2(textOutput("tab-name")),
h2(textOutput(ns("tab-name"))),
h2("Some more static text")
)
)
}
ui <- function(id, label="Main UI") {
ns <- NS(id)
navbarPage(title = "My app",
tabPanel(title = "My tab 1",
pageWithSidebar(
header_module(ns("header")),
sidebarPanel(h2("Sidebar")),
mainPanel(h2("Main Panel"),
textOutput("tab-name"))),
value = "Tab1"),
id = ns("active-tab"))
}
server <- function(input, output, session) {
output[["tab-name"]] <- renderText({ input[["mainUI-active-tab"]] })
}
shinyApp(ui=ui("mainUI"),server=server)
对“活动标签”的引用在主面板中起作用,而不是在模块创建的标题中。如果我使用textOutput(ns("tab-name"))(如上),则只会创建一个空 div <div id="mainUI-header-tab-name" class="shiny-text-output shiny-bound-output"></div>。如果我使用textOutput("tab-name"),主面板也会变空。
【问题讨论】: