在我的 RStudio Shiny 中,我在 server.R
中得到了 selectInput
,在 ui.R
上我得到了 Tags
语句来更改选择框的宽度和高度。
它在页面加载时起作用,但当我进入单一类型时它会恢复为默认大小。有什么想法如何解决吗?
在 ui.R 上
# [...]
,div(class="span6"
,radioButtons("viz_multiple", "Select Type:",
c("Select From List (can use Up/Down + Enter)" = "multiple",
"Search One (Delete then type keyword)" = "single")
)
)
)
,div(class='row-fluid'
,div(class='span12', uiOutput("image_list"))
,tags$head(tags$style(type="text/css", "select#iimage_list { width: 1000px; height: 40px; }"))
)
# [...]
在服务器上。R
# [...]
output$image_list <- renderUI({
imagelist = image_ls()
iimage_list <- as.vector(sort(unique(as.character(imagelist)),decreasing=TRUE))
length_list = length(iimage_list)
selectInput("iimage_list",paste0("samples (",length_list,")"),choices=iimage_list, selectize = input$viz_multiple == 'single')
})
# [...]
当用户从多个
切换到单个
时,有什么想法如何应用tags
命令吗?
最佳答案
您还需要动态添加 css。要定位 selectize 输入,您需要定位 select#dataset + .selectize-control
而不是 select#dataset
图书馆( Shiny )
runApp(list(
ui = bootstrapPage(
radioButtons("viz_multiple", "Select Type:",
c("Select From List (can use Up/Down + Enter)" = "multiple",
"Search One (Delete then type keyword)" = "single")
)
, uiOutput("myUI")
),
server = function(input, output){
output$myUI <- renderUI({
myCSS <-if(input$viz_multiple == 'single'){
tags$style(type="text/css", "select#dataset + .selectize-control{ width: 1000px; height: 40px; }")
}else{
tags$style(type="text/css", "select#dataset { width: 1000px; height: 40px; }")
}
tagList(
selectInput('dataset', 'Choose Dataset', c('mtcars', 'iris'), selectize = (input$viz_multiple == 'single'))
, myCSS
)
})
}
))
或者有两个单独的CSS条目,一个用于select
,一个用于selectize
:
library(shiny)
runApp(list(
ui = bootstrapPage(
radioButtons("viz_multiple", "Select Type:",
c("Select From List (can use Up/Down + Enter)" = "multiple",
"Search One (Delete then type keyword)" = "single")
)
, uiOutput("myUI")
, tags$style(type="text/css", "select#dataset + .selectize-control{ width: 1000px; height: 40px; }")
, tags$style(type="text/css", "select#dataset { width: 1000px; height: 40px; }")
),
server = function(input, output){
output$myUI <- renderUI({
selectInput('dataset', 'Choose Dataset', c('mtcars', 'iris'), selectize = (input$viz_multiple == 'single'))
})
}
))
关于RStudio Shiny 动态选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26998396/