R 两个ActionButton中只有一个以闪亮的颜色响应

R 两个ActionButton中只有一个以闪亮的颜色响应,r,shiny,shinydashboard,R,Shiny,Shinydashboard,我有如下闪亮的应用程序示例。我需要两个selectInput控件,每个selectInput控件仅在我单击操作按钮时响应 我发现第一个操作按钮applyNameFilter根本没有响应。当鼠标悬停在上方时,它不会高亮显示。第二个操作按钮applyTimeFilter似乎正常 有人知道为什么吗?太奇怪了。。。我不知道如何解决这个问题,也不知道如何在这里寻求帮助。非常感谢 library(shinydashboard) library(shiny) library(shinyWidgets) lib

我有如下闪亮的应用程序示例。我需要两个
selectInput
控件,每个
selectInput
控件仅在我单击操作按钮时响应

我发现第一个操作按钮
applyNameFilter
根本没有响应。当鼠标悬停在上方时,它不会高亮显示。第二个操作按钮
applyTimeFilter
似乎正常

有人知道为什么吗?太奇怪了。。。我不知道如何解决这个问题,也不知道如何在这里寻求帮助。非常感谢

library(shinydashboard)
library(shiny)
library(shinyWidgets)
library(shinyjs)
library(dplyr)


df = data.frame(Name = c('A', 'B', 'C', 'A', 'B', 'C'),
       Year = c('2020', '2020', '2020', '2019', '2019', '2019'),
       Value = c(12, 33, 44, 55, 22, 11))

ui <- dashboardPage(
    dashboardHeader(title = "Example" ),
    dashboardSidebar(
        sidebarMenu(
            menuItem("tab", tabName = "tab", icon = icon("globe"))
        ) 
    ), 
    dashboardBody(

        useShinyjs(),

        tabItems(

            tabItem(tabName = "tab",

                    div(id = 'timeAllFilters',
                        box( width=12, background = 'green',

                             selectizeInput(inputId = 'year', 
                                            label='Select Year',
                                          choices = c('', '2020', '2019'),
                                          multiple=FALSE,
                                          options = list(
                                              maxItems = 1,
                                              placeholder = '',
                                              onInitialize = I("function() { this.setValue(''); }"))),

                             actionBttn(
                                 inputId = 'applyTimeFilter',
                                 label = "Apply", 
                                 style = "gradient",
                                 color = "danger",
                                 icon = icon("") ),
                             actionBttn(
                                 inputId = 'clearTimeFilter',
                                 label = "Clear", 
                                 style = "gradient",
                                 color = "danger",
                                 icon = icon("") ) 
                        )  #box
                    ), #div


                    div(id = 'nameAllFilters',
                        dropdown(
                            tags$h3("Filters"),
                            selectizeInput(inputId = 'name', 
                                           label='Select Name',
                                           choices = c('','A', 'B'),
                                           multiple=FALSE,
                                           options = list(
                                               maxItems = 1,
                                               placeholder = '',
                                               onInitialize = I("function() { this.setValue(''); }"))),

                            actionBttn(
                                inputId = 'applyNameFilter',
                                label = "Apply", 
                                style = "gradient",
                                color = "danger",
                                icon = icon("") ),
                            actionBttn(
                                inputId = 'clearNameFilter',
                                label = "Clear", 
                                style = "gradient",
                                color = "danger",
                                icon = icon("") ) 
                        )  #dropdown
                    ), #div

                    dataTableOutput('table')
            ) #tabItem
        ) #tabItems
    ) #dashboardBody
) #dashboardPage


server <- function(input, output, session) {


    df1 = reactive({
        input$applyTimeFilter
        isolate( df %>% filter(Year %in% input$year) )
    })

    # clear time filters 
    observeEvent(input$clearTimeFilter, {
        reset("timeAllFilters")
    })


    df2 = reactive({
        input$applyNameFilter
        isolate ( df1() %>% filter(Name %in% input$name) )
    })

    # clear name filters 
    observeEvent(input$clearNameFilter, {
        reset("nameAllFilters")
    })

    output$table = renderDataTable({
        DT::datatable(df2())
    })
}

shinyApp(ui = ui, server = server)
库(ShinydaShashboard)
图书馆(闪亮)
图书馆(shinyWidgets)
图书馆(shinyjs)
图书馆(dplyr)
df=data.frame(Name=c('A','B','c','A','B','c'),
年份=c('2020年'、'2020年'、'2019年'、'2019年'、'2019年'),
值=c(12,33,44,55,22,11))
ui%筛选器(名称%input$Name中的名称%)
})
#清除名称过滤器
observeEvent(输入$clearNameFilter{
重置(“nameAllFilters”)
})
输出$table=renderDataTable({
DT::数据表(df2())
})
}
shinyApp(用户界面=用户界面,服务器=服务器)

问题似乎在于
actionBttn
位于
框()内。它没有任何问题也能正常工作。您有没有可能找到另一种方法,不用
box()
就可以获得相同的样式


非常感谢。但是,当两个过滤器都被选中时,我的表格仍然不会显示,即使在我移除该框之后也是如此。你知道为什么吗@伊恩·坎贝尔顺便说一句,我更改了数据并更正了一些错误。年份变量应该是character。我觉得问题仍然来自第一个过滤器,即使在删除了框之后,表没有显示和按钮没有响应我认为是两个独立的问题。无论出于何种原因,该框导致父容器的宽度为0px,因此第二个筛选器容器与之重叠。没有显示的表格可能是典型的因素问题。如果尚未升级到4.0,请将
stringsAsFactor=FALSE
添加到
df
的定义中,谢谢。这的确是经典的因素问题!