R Shiny - 使用shinyjs :: toggleState和shinyWidgets :: pickerInput

问题描述 投票:0回答:1

下面的应用程序包含一个标记为Options的单选按钮组和一个渲染的renderUI表达式:

  1. 输入元素input$data,它取决于所选按钮的值和
  2. 一个动作按钮qazxsw poi。

我想禁用该按钮,直到用户选择input$add的有效值。我绑input$data但这失败了。将observe({ toggleState(id = 'add', condition = !is.null(input$data)) })的值打印到控制台会显示pickerInput使用两个单独的值input$dataNULL进行初始化:

""

所以NULL [1] "" 回归:

!is.null(input$data)

而不仅仅是[1] FALSE [1] TRUE

该应用程序:

FALSE

此外,当您将单选按钮从library(shiny) library(shinyjs) library(shinyWidgets) ui <- fluidPage(shinyjs::useShinyjs(), prettyRadioButtons('opt', label = 'Options', choices = c('state', 'file', 'letters')), uiOutput('upload') ) server <- shinyServer(function(input, output, session) { output$upload = renderUI({ tagList( switch(input$opt, 'state' = pickerInput('data', 'Choose a state', choices = state.name, options = list(title = "States..."), choicesOpt = list(subtext = seq_along(state.name)) ), 'file' = fileInput('data', 'Select file'), 'letters' = pickerInput('data', 'Choose a letter', choices = LETTERS, options = list(title = "Letters..."), choicesOpt = list(subtext = seq_along(LETTERS)) ) ), actionButton('add', 'Add') ) }) observe({ print(input$data) # pickerInput initializes with two values toggleState(id = 'add', condition = !is.null(input$data)) }) }) shinyApp(ui, server) 的默认选择切换到state然后再切换回file时,pickerInput只返回state(不是

[1] ""

它在启动时返回)。我不知道这里发生了什么,我在pickerInput的文档中找不到与此有关的任何内容,所以任何帮助都将不胜感激。

r shiny shinyjs
1个回答
0
投票

空字符串NULL [1] "" 不是R中的空对象

''

NULL表示R中的空对象:它是保留字。 NULL通常由值未定义的表达式和函数返回。

?is.null

然而,> !is.null('') [1] TRUE 将解决这个问题

shiny::isTruthy
© www.soinside.com 2019 - 2024. All rights reserved.