我找不到在嵌套的UI模块中使用renderText
中的输出变量的方法。如何更正嵌套闪亮模块中renderText的命名空间?
问题出现在我试图抓住选项卡的名称并将其放在我的navbarPage布局的标题标题中。
我找不到解决我的问题的答案解释如何处理renderUI(xxInput())
通过session$ns
like this one。由于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")
,主面板也会变空。
原来我实际上只试着保留一个'textOutput',但只保留'headerPanel'中的'ns(“tab-name”)'不起作用(不需要'ns')。非常感谢您的回答和附加说明,它很有用! – xav