【发布时间】:2020-11-25 01:11:38
【问题描述】:
关于更改其他 Shiny 应用程序标题的帖子有很多,例如:
Change the title by pressing a shiny button Shiny R
Shiny page title and image
Shiny App: How to dynamically change box title in server.R?
我的问题是相关的,但其中任何一个都没有回答。我想让<head><title>...</title></head> 标记具有反应性,或者至少可以从server.R 中的observeEvent 中控制。
以下方法不起作用,因为 ui 找不到 theTitle,但我希望这种方法可行:
library(shiny)
ui <- fluidPage(
title = theTitle(),
textInput("pageTitle", "Enter text:")
)
server <- function(input, output, session) {
theTitle <- reactiveVal()
observeEvent( input$pageTitle, {
if(is.null(input$pageTitle)) {
theTitle("No title yet.")
} else {
theTitle(input$pageTitle)
}
})
}
我尝试在observeEvent 中使用if..else 逻辑创建output$theTitle <- renderText({...}),然后在ui 的fluidPage 中设置title = textOutput("theTitle"),但这会生成<div ...> 作为标题文本,或<span ...>,如果我们将inline=True 传递给renderText。
如果这澄清了我正在寻找的内容,那么答案将等同于 literal(用该字符串替换字符串变量)ui 生成的
ui <- fluidPage(
title = "No title yet.",
....
)
在用户在框中输入任何文本之前;如果他们输入了“Shiny is great!”进入input$pageTitle的盒子,然后我们会得到文字
ui <- fluidPage(
title = "Shiny is great!",
....
)
【问题讨论】: