1

我想将评级输入与该shinyjs::reset()功能结合使用。一切正常,除了重置功能。有什么提示吗?

这是我的最小示例:

library(shiny)
devtools::install_github("stefanwilhelm/ShinyRatingInput")
library(ShinyRatingInput)
library(shinyjs)

ui <- shinyUI(bootstrapPage(
  useShinyjs(),
  ratingInput("movieRating", label="Rate this movie...", dataStop=5),
  htmlOutput("movieRatingout"),
  actionButton("resetbtn", "reset")
))

#the corresponding server.R
server <- shinyServer(function(input, output, session) {
  output$movieRatingout <- renderText({
    paste("The movie was rated ",input$movieRating)
  })

  observeEvent(input$resetbtn, {
    reset("movieRating")
  })

})


shinyApp(ui, server)
4

1 回答 1

1

您可以手动创建重置操作

1)添加js重置图标(设置前景宽度==0)

jsCode <-"shinyjs.reset_1 = function(params){$('.rating-symbol-foreground').css('width', params);}"

2)将此js添加到应用程序使用extendShinyjs

3)添加session$sendInputMessage到复位输入(set value == NULL

工作示例

jsCode <-"shinyjs.reset_1 = function(params){$('.rating-symbol-foreground').css('width', params);}"
ui <- shinyUI(bootstrapPage(
  useShinyjs(),
  extendShinyjs(text = jsCode),
  ratingInput("movieRating", label="Rate this movie...", dataStop=5),
    htmlOutput("movieRatingout"),
  actionButton("resetbtn", "reset")
))

#the corresponding server.R
server <- shinyServer(function(input, output, session) {
  output$movieRatingout <- renderText({
    paste("The movie was rated ",input$movieRating)
  })

  observeEvent(input$resetbtn, {
    session$sendInputMessage("movieRating", list(value = NULL))
    js$reset_1(0)

  })

})
于 2016-09-19T15:01:28.083 回答