Tengo una aplicación que, cuando agrego 10 al sliderInput , aparece un botón "OK". Pero no se puede acceder a su inputId en el DOM porque #sbtn1 se creó en el server . Y lo necesito debido a mi necesidad en la aplicación.
Me gustaría acceder a este inputId ( #sbtn1 ) para modificarlo a través de JS ( file.js ) pero no existe.
Mi aplicación:
library(shiny) library(shinydashboard) header <- dashboardHeader( title = "Dashboard", titleWidth = 300, dropdownMenuOutput( outputId = "drop1" ) ) sidebar <- dashboardSidebar( width = 300 ) jscode <- "$(function() { $('.skin-blue').addClass('sidebar-mini'); }); " body <- dashboardBody( shinyjs::useShinyjs(), shinyjs::extendShinyjs(text = jscode, functions = "JS"), sliderInput( inputId = "one", label = "Registro 1", value = 1, animate = animationOptions( interval = 500, loop = TRUE ), min = 1, max = 10, step = 1, ticks = TRUE ), sliderInput( inputId = "two", label = "Registro 2", value = 1, animate = animationOptions( interval = 500, loop = TRUE ), min = 1, max = 10, step = 1, ticks = TRUE ), valueBoxOutput( outputId = "box1" ) ) ui <- dashboardPage( header = header, sidebar = sidebar, body = body ) server <- function(session, input, output) { fsoma <- function(x) { if (x != 10) { "Error!" } else (actionButton( inputId = "sbtn1", label = "OK", icon = icon("play-circle-o"), style = "color: #f2f2f2; background-color: #333333; border-color: #333333;" )) } fx <- function(x, y) { x + y } fy <- function(x) { x } reac_0 <- reactive({ tibble::tibble( one = input$one, two = input$two, three = input$three ) }) chuveiro <- reactive({ temp <- reac_0() fx( x = temp$one, y = temp$two ) }) luz <- reactive({ temp <- reac_0() fy( x = temp$three ) }) output$box1 <- renderValueBox({ expr = valueBox( value = fsoma(x = chuveiro()), subtitle = "Sum" ) }) } shinyApp(ui, server) ¿Cómo accedo a esta identificación ( #sbtn1 ) para manejarla en mi documento file.js ?
Enlazo la secuencia de comandos después del botón, por lo que la secuencia de comandos se ejecuta cada vez que se crea el botón.
library(shiny) library(shinydashboard) header <- dashboardHeader( title = "Dashboard", titleWidth = 300, dropdownMenuOutput( outputId = "drop1" ) ) sidebar <- dashboardSidebar( width = 300 ) body <- dashboardBody( sliderInput( inputId = "one", label = "Registro 1", value = 1, animate = animationOptions( interval = 500, loop = TRUE ), min = 1, max = 10, step = 1, ticks = TRUE ), sliderInput( inputId = "two", label = "Registro 2", value = 1, animate = animationOptions( interval = 500, loop = TRUE ), min = 1, max = 10, step = 1, ticks = TRUE ), valueBoxOutput( outputId = "box1" ) ) ui <- dashboardPage( header = header, sidebar = sidebar, body = body ) server <- function(session, input, output) { fsoma <- function(x) { if (x != 10) { "Error!" } else { div( actionButton( inputId = "sbtn1", label = "OK", icon = icon("play-circle-o"), style = "color: #f2f2f2; background-color: #333333; border-color: #333333;" ), tags$script('$(function() {console.log(1); $("#sbtn1").css("background-color", "red");})') ) } } fx <- function(x, y){ x + y} fy <- function(x){x} reac_0 <- reactive({ tibble::tibble( one = input$one, two = input$two, three = input$three ) }) chuveiro <- reactive({ temp <- reac_0() fx( x = temp$one, y = temp$two ) }) luz <- reactive({ temp <- reac_0() fy( x = temp$three ) }) output$box1 <- renderValueBox({ valueBox( value = fsoma(x = chuveiro()), subtitle = "Sum" ) }) } shinyApp(ui, server)