首页 > 解决方案 > 在闪亮的应用程序中重置

问题描述

我正在尝试清除文本区域中写过的内容,但看起来它不起作用。基于以下应用程序,当用户单击“单击”按钮时,内容(如果已写入)应被清除。但事实并非如此。任何人都可以在这里帮助我......................................................

data(mtcars)
library(shiny)
library(shinydashboard)
library(dplyr)
library(DT)
library(shinyjs)

ui <- dashboardPage(
  dashboardHeader(title = "Dynamic sidebar"),
  dashboardSidebar(sidebarMenu(id = "menu", sidebarMenuOutput("menu"))),
  dashboardBody(tabItems
                (
                  tabItem
                  (tabName = "plots", h2("Dashboard plots"),
                    fluidRow(column(width = 12, class = "well",
                                    h4("Boxplot"),
                                    plotOutput("bxp")))
                  ),
                  tabItem(tabName = "dashboard", h2("Dashboard tab content"),
                          dataTableOutput(outputId = "subdt"),textAreaInput("sd","label1"),textAreaInput("sd1","label2") ,
                          actionButton("idff","click"))
                )
  )
)



server <- function(input, output, session) {
  output$menu <- renderMenu({
    sidebarMenu(
      # menuItem("Plots Menu", tabName = "plots", icon = icon("line-chart")),
      menuItem("Table Menu", icon = icon("info"),
               menuSubItem(
                 "Dashboard", tabName = "dashboard", icon = icon("calendar")
               ),
               selectInput(
                 inputId = "mcm", label = "Some label", multiple = TRUE,
                 choices = unique(mtcars$cyl), selected = unique(mtcars$cyl)
               )
      )
    )
  })
  
  observe({
    print(input$menu)
  })
  datsub <- reactive({
    mtcars %>%
      filter_at(vars("cyl"), all_vars(. %in% input$mcm))
  })
  
  output$subdt <- renderDataTable({
    datatable(datsub(),selection = if(input$menu == "dashboard"){'single'} else {'none'})
    # print(datatable.selection())
  })
  
  # datatable(datsub(),selection = if(input$menu == "dashboard"){'single'} else {'none'})
  output$bxp <- renderPlot({
    hist(rnorm(100))
  }) 
  
  observeEvent(input$idff,{
    print("cjec")
    shinyjs::reset('sd')
    shinyjs::reset('sd1')
  })
}

shinyApp(ui, server)

标签: rshiny

解决方案


textAreaInput建议按照评论中的建议更新。更新事件处理程序如下:

observeEvent(input$idff, {
    updateTextAreaInput(session = session, inputId = 'sd', value = "")
    updateTextAreaInput(session = session, inputId = 'sd1', value = "")
})

推荐阅读