2013-06-18 4 views
9

renderUI()의 반응성 문제 옵션 2 "가 작동합니다. "# Option 1"이 활성화되면 임의의 문자열을 입력하고 버튼을 누르십시오. 처음에는 텍스트 상자의 값을 "abc"로 바꿉니다. 그러나 다음 번에는 그렇지 않습니다.반짝 - 나는 R.에서</p> 나는이 작동하지 않는 이유 "# 옵션 1"server.R에서 이해하려고 노력하지만, 주석하고 <p>"#을 반짝 패키지 어려움이

val()은 이미 input $ change에 의존하므로 버튼을 누를 때마다 다시 실행해야하며 "# Option 2"는 isolate()에 래핑되므로 추가되지 않습니다. 어떤 반응성이든.

"# Option 1"을 사용하면 실제로 값이 "abc"로 부분적으로 변경됩니다. Google 크롬의 inspect 요소가 열리면 "# Option 2"는 버튼을 누를 때마다 값을 변경하고 "# Option 1"은 값을 "abc"로 변경하지만 화면이 업데이트 될 때만 업데이트됩니다 처음 누르십시오.

require(shiny) 

shinyServer(function(input, output) { 

    val <- reactive({ 
    if(input$change>0) { 
    # Option 1 
     'abc' 
#  # Option 2 
#  isolate({ 
#   paste('abc',input$txt,"") 
#  }) 
    } else { 
     '' 
    } 
    }) 

    output$textbox <- renderUI({ 
    textInput("txt","Text",val()) 
    }) 

}) 

ui.R 어딘가에 숨겨져 버그가있을 수 있습니다처럼이 보입니까

require(shiny) 
require(shinyIncubator) 

shinyUI(pageWithSidebar(
    headerPanel('Test'), 

    sidebarPanel(
    uiOutput("textbox"), 
    actionButton("change", "Change") 
), 

    mainPanel(

) 
)) 

답변

4

여기에 내 대답을 참조하십시오.

+0

감사합니다. 텍스트 입력 값 끝에 공백을 추가하고 입력 값 끝에 공백이 있으면 공백을 제거하여 문제를 해결했습니다. 따라서 새 값은 항상 이전 값과 다를 수 있습니다. 어쨌든 모든 들어오는 문자열을 다듬습니다. – user1603038

1

server.R,하지만 난 할 수 있습니다 여기에

코드입니다 그것을 추적하지 마라.

좋은 소식은 updateTextInput 기능으로이 효과를 얻을 수 있어야한다는 것입니다.

문제를 자세히 살펴 보려면이 문제를 해결해야합니다. https://github.com/rstudio/shiny/issues/181. 우리가 무슨 일이 일어나는지 알아낼 경우이 게시물을 업데이트하려고 노력할 것입니다.

https://groups.google.com/d/msg/shiny-discuss/PLHauRlFw3k/AnoD7NusvDIJ

요점은 서버가 textbox 출력에 정확히 같은 값을 보내는 유지하는 것이, 그래서 클라이언트가 그것을 무시하기에 충분 "스마트"입니다 :