2017-02-23 1 views
1

반응 형 앱으로 특정 상태의지도를 표시하는 데 문제가 있습니다. 나는 "지도보기"를 클릭 할 때만 응용 프로그램이 반응하기를 원하지만, 다음 코드를 사용하여 어떤 이유로 "지도보기"를 처음 클릭 한 후에 입력 (상태)을 변경할 때마다 출력이 변경됩니다. 버튼을 다시 클릭하십시오. (; 중 하나가 작동하지 않습니다 설명으로 코드) 나는 액션 버튼을 클릭 할 때까지 반응을 지연하도록되어 있지만, 그 일을 아니에요 observeEvent (및 eventReactive)가 예상대로 수행되지 않습니다.

library(shiny) 

ui <- fluidPage(
    titlePanel("Show map of a given state"), 
    sidebarLayout(
     sidebarPanel(
     textInput("state", label = "State", value = "CA", placeholder = "California or CA"), 
     actionButton("showU","Show map") 
     ), 
     mainPanel(
      conditionalPanel(
       condition = "input.showU > 0", 
       h3(textOutput("state")), 
       uiOutput("url") 
      ) 
     ) 
    ) 
) 

server <- function(input, output){ 
    observeEvent(input$showU,{ 
     output$state <- renderText(paste("Map of", input$state, ":")) 
     output$url <-renderUI({a(href=paste("https://www.google.com/maps/place/", input$state, sep=""),"Show in Google Map",target="_blank")}) 
    }) 
    #output$state <- eventReactive(input$showU, renderText(paste("Map of", input$state, ":"))) 
    #output$url <- eventReactive(input$showU, renderUI({a(href=paste("https://www.google.com/maps/place/", input$state, sep=""),"Show in Google Map",target="_blank")})) 
} 

shinyApp(ui,server) 

나는 observeEvent 또는 eventReactive 생각했다. 아무도 내가 여기서 무엇이 잘못되었는지 알아낼 수 있습니까? 고맙습니다!

답변

2

input$xxx (renderYYY)이라고 부르기 때문입니다. isolate() :

observeEvent(input$showU,{ 
     output$state <- renderText(paste("Map of", isolate(input$state), ":")) 
     output$url <-renderUI({a(href=paste("https://www.google.com/maps/place/", isolate(input$state), sep=""),"Show in Google Map",target="_blank")}) 
    }) 
+0

사용할 수 있습니다. 정말 고마워. –

관련 문제