我正在尝试根据用户选择在我的闪亮应用中拥有可更改的窗口标题。虽然主标题和应用程序的其他部分没有问题,但我正在努力争取窗口标题。
我尝试使用renderUI()
和uiOutput()
,但没有成功。
# packages
library("shiny")
library("shinyWidgets")
# app
runApp(list(
# UI
ui = shinyUI(fluidPage(
# title panel
tagList(div(div(style = "display: inline-block; ",
h1(uiOutput("uiMainTitle")), class = "main_title"),
div(style = "width: 65px; display: inline-block; float: right; ",
pickerInput(inputId = "color",
label = " ",
choices = c("blue", "red")))),
tags$title(uiOutput("uiWindowTitle")))
)),
# SERVER
server = function(input, output, session) {
# main title
output$uiMainTitle <- renderUI({
ifelse(input$color == "blue", "Blue title", "Red title")})
# window title
output$uiWindowTitle <- renderUI({
ifelse(input$color == "blue", "Blue app", "Red app")})
}
)
)
热烈欢迎任何建议。
答案 0 :(得分:2)
您可以使用shinyjs包和一些js代码。这解决了这个问题:
# packages
library("shiny")
library("shinyWidgets")
library("shinyjs")
# app
runApp(list(
# UI
ui = shinyUI(fluidPage(
useShinyjs(),
# title panel
tagList(div(div(style = "display: inline-block; ",
h1(uiOutput("uiMainTitle")), class = "main_title"),
div(style = "width: 65px; display: inline-block; float: right; ",
pickerInput(inputId = "color",
label = " ",
choices = c("blue", "red")))),
tags$title("blue")
))),
# SERVER
server = function(input, output, session) {
# main title
output$uiMainTitle <- renderUI({
ifelse(input$color == "blue", "Blue title", "Red title")})
# window title
# output$uiWindowTitle <- renderUI({
# ifelse(input$color == "blue", "Blue app", "Red app")})
observeEvent(input$color,{
#in the place of input$color you can put your personal title
titlejs=paste0("document.title ='", input$color,"'")
runjs(titlejs)
})
}
)
)