Отключить кнопку действия, когда ввод текста пуст в приложении Shiny [R]

Я создаю блестящее приложение, в котором запрос из textInput выполняется, когда пользователь нажимает кнопку действия «поиск». Я бы хотел, чтобы эта кнопка была отключена, если поле textInput пусто. Я использую здесь shinyjs::toggleState(), но не могу понять, какую логику нужно применить, чтобы увидеть, что текстовое поле пусто. В моем воспроизводимом файле ниже я применил логику is.null(input$query). Я также пробовал с is.na(input$query), length(input$query) == 0 и input$query == '', все безуспешно Что я должен поставить вместо этого?

Вот файл app.r:

library(shiny)
library(shinyjs)

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      useShinyjs(),
      textInput(inputId = "query", label = "Enter query:", value = ""),
      actionButton(inputId = "search", label = "Search", icon = icon("search"))
    ),
    mainPanel()
  )
)

server <- function(input, output) {
  observe({
    toggleState("search", !is.null(input$query))
  })
}

shinyApp(ui = ui, server = server)

person Phil    schedule 23.10.2017    source источник
comment
Используйте 1_   -  person Sagar    schedule 23.10.2017


Ответы (1)


Что-то подобное делать?

 observe({
    if(is.null(input$query) || input$query == ""){
      disable("search")
    }
    else{
      enable("search")
    }
  })

В соответствии с @Sagar вы также можете сделать:

observe({
  toggleState("search", input$query != "" | is.null(input$query))
})

or

observeEvent(input$query,{
  toggleState("search", input$query != "" | is.null(input$query))
})
person Pork Chop    schedule 23.10.2017