【发布时间】:2016-05-04 16:30:06
【问题描述】:
我正在构建一个闪亮的应用程序,用户在该应用程序中单击一个图像,这会将他们推进到另一个图像。这看起来相对简单,但在用户查看第一张图片之前,他们需要输入他们的电子邮件地址。为了实现这一点,我一直在使用conditionalPanel,其中只有在用户点击操作按钮时才会显示第一张图片。但是,当图像面板嵌入到 conditionalPanel 中时,imageOutput 的 click 参数似乎停止工作。
我有一个名为 images 的目录,其中包含 9 张图像,文件名为 1.png, 2.png...9.png(顺便说一句,如果有办法上传此目录以使此示例更易于复制,我会乐于接受建议!)。以下 MWE(不包括 conditionalPanel 元素)运行良好:
library(shiny)
## User interface
ui <- fluidPage(
h1("MWE",align="center"),
fluidRow(
column(4, conditionalPanel(condition = "input.signingo == 0",
wellPanel(
textInput("who",label = "Please enter your email address.", value=""),
actionButton("signingo",label="Go.")
))
),
column(6, align="center",
wellPanel(
imageOutput("image", height = 175, width = 116, click = "photo_click")
)
)
)
)
server <- function(input, output){
values <- reactiveValues(i = 0, selections = sample(1:9,1))
## Load image
output$image <- renderImage({
filename <- normalizePath(file.path(paste0('images/',values$selections,".png")))
# Return a list containing the filename and alt text
list(src = filename,
alt = paste(input$name))
}, deleteFile = FALSE)
## Function to increment counter by one and to randomly select new image
click.function <- function(){isolate({
values$i <- values$i + 1
values$selections <- sample(1:9,1)
})}
## Move on
observeEvent(input$photo_click,{click.function() })
}
shinyApp(ui = ui, server = server)
但是,当我包含 conditionalPanel 元素时,单击图像似乎不再生成新图像。这是我正在使用的代码:
library(shiny)
## User interface
ui <- fluidPage(
h1("MWE",align="center"),
fluidRow(
column(4, conditionalPanel(condition = "input.signingo == 0",
wellPanel(
textInput("who",label = "Please enter your email address.", value=""),
actionButton("signingo",label="Go.")
))
),
column(6, align="center",
conditionalPanel(condition = "input.signingo > 0",
wellPanel(
imageOutput("image", height = 175, width = 116, click = "photo_click")
))
)
)
)
server <- function(input, output){
values <- reactiveValues(i = 0, selections = sample(1:9,1))
## Load image
output$image <- renderImage({
filename <- normalizePath(file.path(paste0('images/',values$selections,".png")))
# Return a list containing the filename and alt text
list(src = filename,
alt = paste(input$name))
}, deleteFile = FALSE)
## Function to increment counter by one and to randomly select new image
click.function <- function(){isolate({
values$i <- values$i + 1
values$selections <- sample(1:9,1)
})}
## Move on
observeEvent(input$photo_click,{click.function() })
}
shinyApp(ui = ui, server = server)
问题是,虽然第一个conditionalPanel 似乎在做它的工作——用户首先看到“请输入您的电子邮件地址”,然后在点击“开始”后才看到第一张图片——点击image 不再使用户前进到下一个图像。任何想法将不胜感激。
【问题讨论】: