2016-09-20 5 views
1

의 재설정 기능을 사용하여 radioButton() 입력을 HTML로 가져 오려고합니다.HTML 및 shinyjs :: reset()을 사용한 radioButton() 선택

radioButtons()은 레이블에 HTML을 허용하지 않으므로 다음으로 시작했습니다.

library(shiny) 
library(shinyjs) 

ui <- shinyUI(bootstrapPage(

    useShinyjs(), 
    tags$div(id = "form", 
    tags$div(HTML(' 
       <div id="rating" class="form-group shiny-input-radiogroup shiny-input-container"> 
       <label class="control-label" for="rating">Your Rating:</label> 
       <div class="shiny-options-group"> 
       <div class="radio"> 
       <label> 
       <input type="radio" name="one" value="1"/> 
       <span><i class="fa fa-star" aria-hidden="true"></i></span> 
       </label> 
       </div> 
       <div class="radio"> 
       <label> 
       <input type="radio" name="two" value="2"/> 
       <span><i class="fa fa-star" aria-hidden="true"></i><i class="fa fa-star" aria-hidden="true"></i></span> 
       </label> 
       </div> 
       </div> 
       </div>'))), 

    actionButton("feedback_btn", "send feedback", icon = icon("send", lib = "font-awesome")), 
    htmlOutput("Ratingout") 
)) 

    server <- shinyServer(function(input, output, session) { 
    output$Ratingout <- renderText({ 
     paste("The Rating was ", input$rating) 
    }) 

    observeEvent(input$feedback_btn, { 
     reset("rating") 

    }) 
    }) 

    shinyApp(ui, server) 

하지만이 문제로 실행 :

  • 나는 input$Ratingout 값에 액세스 할 수
  • 내가 올바른 방법으로 shinyjs::reset()을 사용하지 않은 것 같다; 단추를 재설정 한 후 아니오 선택이있는 방식으로 단추를 재설정하려고합니다.

답변

2

bind 입력을 서버 측에서 사용하려면 shiny로 입력해야합니다. 내 마음에

쉽게 덮어 반짝 radioButtons

하지만 도움 당신은 볼 수 있습니다

당신은 "아무도 선택하지"상태를 표현해야하는 경우는 가능 에에 라디오 버튼을 기본 selected = character (0)을 사용하여 옵션을 선택하지 않았습니다. 그러나 사용자가 선택을하면 해당 상태로 되돌릴 수있는 방법이 제공되지 않으므로이 방법은 권장되지 않습니다. 대신 첫 번째 선택 항목을 c ("None selected"= "")로 지정하십시오.

예를

library(shiny) 
library(shinyjs) 

edit_button=function(rb){ 

    for(i in 1:length(rb$children[[2]]$children[[1]])){ 
    value=as.numeric(rb$children[[2]]$children[[1]][[i]]$children[[1]]$children[[1]]$attribs$value) 
    if(!is.na(value)&value>0){ 
    rb$children[[2]]$children[[1]][[i]]$children[[1]]$children[[2]]$children[[1]]=HTML(paste(rep('<i class="fa fa-star" aria-hidden="true"></i>',value),sep = "",collapse = "")) 
    } 
    } 
    rb 

} 




ui <- shinyUI(bootstrapPage(
    edit_button(radioButtons("rate_","Rate",choices = list("None selected"=0,'one'=1,"two"=2))), 
    useShinyjs(), 
    actionButton("feedback_btn", "send feedback", icon = icon("send", lib = "font-awesome")), 
    htmlOutput("Ratingout") 
      )) 

server <- shinyServer(function(input, output, session) { 
    output$Ratingout <- renderText({ 
    paste("The Rating was ", input$rate_) 
    }) 

    observeEvent(input$feedback_btn, { 
    reset("rate_") 
    }) 
}) 

shinyApp(ui, server) 
+0

확인을 (character(0) 작동하지 reset) 기본 값으로 0을 사용하는 것이 그래서 BETER -이 나를 위해 이미 사용할 수! 내 유스 케이스에서는 (더 나은) 더 나은 솔루션은 inital 및 reseted 상태 인 버튼이 강조 표시되지 않는 (권장하지 않는) 버전입니다. 하지만 제 js 지식은 0에 가깝습니다 ... – sammerk